Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Nota
Questa non è la versione più recente di questo articolo. Per la versione corrente, vedere la versione .NET 9 di questo articolo.
Avviso
Questa versione di ASP.NET Core non è più supportata. Per altre informazioni, vedere i criteri di supporto di .NET e .NET Core. Per la versione corrente, vedere la versione .NET 9 di questo articolo.
Importante
Queste informazioni si riferiscono a un prodotto non definitive che può essere modificato in modo sostanziale prima che venga rilasciato commercialmente. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Per la versione corrente, vedere la versione .NET 9 di questo articolo.
Di Tom Dykstra, Steve Smith, Stephen Halter e Chris Ross
Un'app ASP.NET Core viene eseguita con un'implementazione del server HTTP in-process. L'implementazione del server attende le richieste HTTP e le rende visibili all'app come un set di funzionalità di richiesta combinate in un HttpContext.
ASP.NET Core viene fornito con il server Kestrel, ovvero il server HTTP multipiattaforma predefinito.
Il server Kestrel è l'implementazione di server HTTP multipiattaforma predefinita. Kestrel offre le prestazioni e l'utilizzo della memoria migliori, ma non dispone di alcune delle funzionalità avanzate in HTTP.sys. Per altre informazioni, vedere Confronto tra Kestrel e HTTP.sys in questo documento.
Usare Kestrel:
Da solo come server perimetrale che elabora le richieste direttamente da una rete, inclusa Internet.
Con un server proxy inverso, ad esempio Internet Information Services (IIS), Nginx o Apache. Il server proxy inverso riceve le richieste HTTP da Internet e le inoltra a Kestrel.
Sono supportate entrambe le configurazioni di hosting, con o senza un server proxy inverso.
Per Kestrel indicazioni sulla configurazione e informazioni su quando usare Kestrel in una configurazione del proxy inverso, vedere Kestrel Server Web in ASP.NET Core.
ASP.NET Core viene fornito con il server Kestrel, ovvero il server HTTP multipiattaforma predefinito.
Per informazioni su come usare Nginx in Linux come server proxy inverso per Kestrel, vedere Host ASP.NET Core in Linux con Nginx.
Se si eseguono app ASP.NET Core in Windows, HTTP.sys è un'alternativa a Kestrel. Kestrel è consigliato rispetto a HTTP.sys a meno che l'app non richieda funzionalità non disponibili in Kestrel. Per altre informazioni, vedere l'introduzione all'implementazione del server Web HTTP.sys in ASP.NET Core.
HTTP.sys può essere usato anche per le app che vengono esposte solo a una rete interna.
Per indicazioni sulla configurazione di HTTP.sys, vedere Implementazione del server Web HTTP.sys in ASP.NET Core.
L'oggetto IApplicationBuilder disponibile nel metodo Startup.Configure
espone la proprietà ServerFeatures del tipo IFeatureCollection.
Kestrel e HTTP.sys espongono una singola funzionalità ciascuno, IServerAddressesFeature, ma implementazioni server diverse potrebbero esporre funzionalità aggiuntive.
È possibile usare IServerAddressesFeature
per individuare la porta a cui è associata l'implementazione server in fase di esecuzione.
Se i server predefiniti non soddisfano i requisiti dell'app, è possibile creare un'implementazione server personalizzata. La guida a Open Web Interface for .NET (OWIN) spiega come scrivere un'implementazione Nowin di IServer. È necessario implementare solo le interfacce delle funzionalità usate dall'app, anche se è richiesto come minimo il supporto di IHttpRequestFeature e IHttpResponseFeature.
Il server viene avviato quando l'editor o l'ambiente di sviluppo integrato (IDE) avvia l'app:
- Visual Studio: è possibile usare i profili di avvio per avviare l'app e il server con IIS Express/Modulo ASP.NET Core o la console.
- Visual Studio Code: l'app e il server vengono avviati da Omnisharp, che attiva il debugger CoreCLR.
- Visual Studio per Mac: l'app e il server vengono avviati dal debugger in modalità Mono Soft.
All'avvio dell'app dal prompt dei comandi nella cartella del progetto, dotnet run avvia l'app e il server (solo Kestrel e HTTP.sys). La configurazione viene specificata dall'opzione -c|--configuration
, impostata su Debug
(valore predefinito) o su Release
.
Un file launchSettings.json
fornisce la configurazione quando si avvia un'app con dotnet run
o con un debugger integrato negli strumenti, ad esempio Visual Studio. Se i profili di avvio sono presenti in un file launchSettings.json
, usare l'opzione --launch-profile {PROFILE NAME}
con il comando dotnet run
o selezionare il profilo in Visual Studio. Per altre informazioni, vedere dotnet run e Creazione di pacchetti di distribuzione di .NET Core.
HTTP/2 è supportato con ASP.NET Core negli scenari di distribuzione seguenti:
- Kestrel
- Sistema operativo
- Windows Server 2016/Windows 10 o versioni successive†
- Linux con OpenSSL 1.0.2 o versioni successive (ad esempio, Ubuntu 16.04 o versioni successive)
- macOS 10.15 o versione successiva
- Framework di destinazione: .NET Core 2.2 o versioni successive
- Sistema operativo
-
HTTP.sys
- Windows Server 2016/Windows 10 o versioni successive
- Framework di destinazione: non applicabile alle distribuzioni HTTP.sys.
-
IIS (in-process)
- Windows Server 2016/Windows 10 o versioni successive; IIS 10 o versioni successive
- Framework di destinazione: .NET Core 2.2 o versioni successive
-
IIS (out-of-process)
- Windows Server 2016/Windows 10 o versioni successive; IIS 10 o versioni successive
- Le connessioni server perimetrali pubbliche usano HTTP/2, mentre la connessione con proxy inverso a Kestrel usa HTTP/1.1.
- Framework di destinazione: non applicabile alle distribuzioni IIS out-of-process.
†Kestrel ha un supporto limitato per HTTP/2 in Windows Server 2012 R2 e Windows 8.1. Il supporto è limitato perché l'elenco di suite di crittografia TLS supportate disponibili in questi sistemi operativi è limitato. Un certificato generato con un algoritmo ECDSA potrebbe essere necessario per proteggere le connessioni TLS.
- Kestrel
- Sistema operativo
- Windows Server 2016/Windows 10 o versioni successive†
- Linux con OpenSSL 1.0.2 o versioni successive (ad esempio, Ubuntu 16.04 o versioni successive)
- HTTP/2 verrà supportato in macOS in una versione futura.
- Framework di destinazione: .NET Core 2.2 o versioni successive
- Sistema operativo
-
HTTP.sys
- Windows Server 2016/Windows 10 o versioni successive
- Framework di destinazione: non applicabile alle distribuzioni HTTP.sys.
-
IIS (in-process)
- Windows Server 2016/Windows 10 o versioni successive; IIS 10 o versioni successive
- Framework di destinazione: .NET Core 2.2 o versioni successive
-
IIS (out-of-process)
- Windows Server 2016/Windows 10 o versioni successive; IIS 10 o versioni successive
- Le connessioni server perimetrali pubbliche usano HTTP/2, mentre la connessione con proxy inverso a Kestrel usa HTTP/1.1.
- Framework di destinazione: non applicabile alle distribuzioni IIS out-of-process.
†Kestrel ha un supporto limitato per HTTP/2 in Windows Server 2012 R2 e Windows 8.1. Il supporto è limitato perché l'elenco di suite di crittografia TLS supportate disponibili in questi sistemi operativi è limitato. Un certificato generato con un algoritmo ECDSA potrebbe essere necessario per proteggere le connessioni TLS.
- Kestrel
- Sistema operativo
- Windows Server 2016/Windows 10 o versioni successive†
- Linux con OpenSSL 1.0.2 o versioni successive (ad esempio, Ubuntu 16.04 o versioni successive)
- HTTP/2 verrà supportato in macOS in una versione futura.
- Framework di destinazione: .NET Core 2.2 o versioni successive
- Sistema operativo
-
HTTP.sys
- Windows Server 2016/Windows 10 o versioni successive
- Framework di destinazione: non applicabile alle distribuzioni HTTP.sys.
-
IIS (in-process)
- Windows Server 2016/Windows 10 o versioni successive; IIS 10 o versioni successive
- Framework di destinazione: .NET Core 2.2 o versioni successive
-
IIS (out-of-process)
- Windows Server 2016/Windows 10 o versioni successive; IIS 10 o versioni successive
- Le connessioni server perimetrali pubbliche usano HTTP/2, mentre la connessione con proxy inverso a Kestrel usa HTTP/1.1.
- Framework di destinazione: non applicabile alle distribuzioni IIS out-of-process.
†Kestrel ha un supporto limitato per HTTP/2 in Windows Server 2012 R2 e Windows 8.1. Il supporto è limitato perché l'elenco di suite di crittografia TLS supportate disponibili in questi sistemi operativi è limitato. Un certificato generato con un algoritmo ECDSA potrebbe essere necessario per proteggere le connessioni TLS.
-
HTTP.sys
- Windows Server 2016/Windows 10 o versioni successive
- Framework di destinazione: non applicabile alle distribuzioni HTTP.sys.
-
IIS (out-of-process)
- Windows Server 2016/Windows 10 o versioni successive; IIS 10 o versioni successive
- Le connessioni server perimetrali pubbliche usano HTTP/2, mentre la connessione con proxy inverso a Kestrel usa HTTP/1.1.
- Framework di destinazione: non applicabile alle distribuzioni IIS out-of-process.
Una connessione HTTP/2 deve usare ALPN (Application-Layer Protocol Negotiation) e TLS 1.2 o versioni successive. Per altre informazioni, vedere gli argomenti relativi agli scenari di distribuzione server.
Per indicazioni sulla creazione di un'app Web affidabile, sicura, efficiente, testabile e scalabile ASP.NET Core, vedere modelli di app Web Enterprise. È disponibile un'app Web di esempio completa di qualità di produzione che implementa i modelli.
Feedback su ASP.NET Core
ASP.NET Core è un progetto di open source. Selezionare un collegamento per fornire feedback: