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:
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