26 messaggi dal 06 settembre 2002
Sto cominciando a studiare ASP.NET Core e per questo ho acquistato il libro ASP.NET Core 2 di Bochicchio e company.

Sono al secondo capitolo del libro e ho incontrato questo problema.

Premetto che il sistema che utilizzo e' Windows 10 versione 1804 (64 bit), Visual Studio 15.8.4, Visual Studio Code 1.27.1, .NET Core 2.1.402. Quindi tutto aggiornato alle ultimissime versioni.

Prima prova. Progetto generato da riga comandi.

1. ho eseguito da riga comandi "c:\MyFirstWebApp>dotnet new mvc --auth individual" e il progetto e' stato generato senza errori.

2. ho quindi eseguito il comando "c:\MyFirstWebApp>dotnet build" e il progetto e' stato compilato senza errori.

3. ho infine eseguito il comando "c:\MyFirstWebApp>dotnet run" senza problemi

4. se nel browser Microsoft Edge inserisco l'URL "http://localhost:5000/" l'indirizzo viene sostituito in "https://localhost:5001/" e appare il messaggio d'errore "Questo sito non è sicuro" segnalando che il certificato e' errato!?!

Ho aperto questo progetto anche con Visual Studio Code e Visual Studio ottenendo sempre lo stesso tipo di errore.

Immagino che tutto dipenda da qualche impostazione della configurazione, ma non saprei esattamente quale.

Seconda prova. Progetto generato da Visual Studio.

Creo in Visual Studio un nuovo progetto Web .NET Core > Applicazione Web ASP.NET Core 2.1 > Applicazione Web (MVC) e disabilitando l'opzione "Configura per HTTPS". Se lancio l'esecuzione, l'applicazione web funziona senza problemi nel browser di default.

Conclusione.
La prima cosa che ho notato e' che i due progetti, quello generato da riga comandi e quello da Visual Studio, appaiono molto diversi!!!

La seconda e' che mentre il primo va in errore il secondo funziona senza problemi.
Forse dipende dal template utilizzato dalla riga comandi?

Qualcuno ha fatto queste prove? ha per caso risolto il motivo dell'errore di certificato?

Grazie per la disponibilita', salvo.
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao e grazie per aver acquistato il libro!

4. se nel browser Microsoft Edge inserisco l'URL "http://localhost:5000/" l'indirizzo viene sostituito in "https://localhost:5001/" e appare il messaggio d'errore "Questo sito non è sicuro" segnalando che il certificato e' errato!?!

E' normale che sia così perché i nuovi template di progetto di ASP.NET Core 2.1 abilitano HTTPS di default e, per farlo, usano un certificato autofirmato. Dato che questo certificato non è stato emesso da alcuna certification authority riconosciuta, il browser non lo reputa attendibile e ti mostra quell'errore.
Capisco benissimo che questo errore può disorientare, soprattutto chi si avvicina per la prima volta allo sviluppo web. Penso che questa sia stata una decisione non facile per Microsoft: da un lato, introdurre l'uso di HTTPS nel template serve a sensibilizzare gli sviluppatori sul fatto che è importante proteggere ogni tipo di applicazione web. Dall'altro, ricorrere a un certificato autofirmato può dare l'impressione che l'applicazione non funzioni.

L'errore si può risolvere facilmente lanciando questo comando, che serve ad aggiungere il certificato autofirmato nel certificate store di windows, in modo che d'ora in poi sia reputato attendibile.
dotnet dev-certs https --trust


In realtà potresti comunque visualizzare l'applicazione anche senza lanciare il comando qui sopra. Da Edge, quando ti si presenta l'errore, clicca "Dettagli" > "Continua per la pagina web". Però meglio non farlo perché l'errore continuerà ripresentartisi anche in successive occasioni. Dato che lanciare il comando è facile e risolutivo, ti consiglio di fare in quel modo.

Nel libro, la questione di HTTP e dei certificati è stata approfondita nel capitolo 17, al paragrafo "Proteggere l'applicazione con un certificato SSL" (dovrebbe essere a pagina 373).


Immagino che tutto dipenda da qualche impostazione della configurazione, ma non saprei esattamente quale.

Esatto, come è scritto al capitolo 2 (pagina 14), ricordati sempre che puoi usare l'opzione --help del comando dotnet per elencare tutte le opzioni disponibili. Quindi, digitando:
dotnet new mvc --help

Avresti un output in cui, tra la varie opzioni, compare anche questa:
  --no-https  Whether to turn off HTTPS. This option only applies if IndividualAuth
              or OrganizationalAuth are not being used.
              bool - Optional
              Valore predefinito: false / (*) true


Quindi, per creare un'applicazione senza HTTPS dovresti lanciare.
dotnet new mvc --no-https


Questo corrisponde al togliere la spunta dalla casella "Configura per HTTPS". Attenzione che né da Visual Studio né da riga di comando puoi disabilitare HTTPS se usi l'autenticazione con account individuali. Questa è una "protezione" di Microsoft per evitare che con i template si possano creare applicazioni in cui le password passano su un canale non sicuro perché privo di certificato.

In realtà, tu hai la completa libertà di modificare la tua applicazione come preferisci e puoi anche disabilitare la ridirezione verso HTTPS escludendo questa riga dal file Startup.cs:
//app.UseHttpsRedirection();

Anche questo è spiegato nel capitolo 18 (pagina 375).


La prima cosa che ho notato e' che i due progetti, quello generato da riga comandi e quello da Visual Studio, appaiono molto diversi!!!

Ti assicuro che, se vengono fornite le stesse opzioni, il progetto è lo stesso. Questo Microsoft lo fa perché chi sceglie di usare la riga di comando abbia la stessa esperienza di utilizzo di chi usa Visual Studio.

ciao,
Moreno

Enjoy learning and just keep making
26 messaggi dal 06 settembre 2002
Ti ringrazio per la tua pronta risposta, adesso tutto funziona perfettamente!!!

Progetto generato da riga comandi.

1. per adesso ho evitato di aggiungere il certificato autofirmato nel certificate store di Windows, e percio' ho lanciato il comando "dotnet new mvc --no-https" che ha generato l'applicazione senza problemi

2. ho lanciato il comando "dotnet run"

3. nel browser Microsoft Edge inserisco l'URL "http://localhost:5000/" e l'applicazione parte senza problemi!!

4. ho lanciato "ctrl-c" per lo shut down


Apertura progetto da Visual Studio 2017.

apro il l'applicazione con il comando: File > Apri > Progetto/Soluzione > C:\MyFirstWebApp\MyFirstWebApp.csproj

E tutto funziona correttamente!!!

Giusto per completezza. Prima facevo l'errore di aprire l'applicazione con il comando: File > Apri > Sito Web > C:\MyFirstWebApp.
Visual Studio non capisce che e' un'applicazione ASP.NET Core (immagino che pensi che si tratti di un'applicazione ASP.NET) e lanciando l'esecuzione viene mostrato questo errore:

"HTTP Error 403.14 - Forbidden

Il server Web è configurato per non consentire la visualizzazione del contenuto dalla directory."


Grazie, sto iniziando il capitolo 4.
salvo

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.