La pubblicazione di un'applicazione
ASP.NET Core su
IIS è differente rispetto alle applicazioni
.NET standard.
Le applicazioni
ASP.NET Core hanno un web server integrato chiamato
Kestrel e possono essere eseguite anche senza
IIS.
IIS è utile nel caso si ha la necessità di installare più applicazioni
core sulla stessa porta, ad esempio sulla porta
80 dove ogni applicazione ha un diverso host header, oppure quando si ha la necessità di intallare un certificato
https.
In questo caso
IIS si comporta come un
reverse proxy che gira le chiamate all'applicazione
ASP.NET Core al web server
Kestrel che rimane in ascolto su una porta locale (variabile ambiente %ASPNETCORE_PORT%) assegnata al primo avvio.
Per utilizzare
ASP.NET Core su
IIS è necessario installare
.Net Core Windows Server Hosting.Net Core Windows Server Hosting installazione moduli completamento installazione Dopo l'installazione eseguire un
iisreset.
Se tutto è andato a buon fine in
IIS è presente il modulo
AspNetCoreModulemodulo IIS AspNetCoreModule A questo punto è possibile creare il sito su
IISnuovo sito configurazione sito in questo esempio non ho utilizzato l'host name ma la porta 3210 su localhost
Dopo la creazione del sito è necessario configurare l'application pool come
No Managed codeelenco application pool impostazioni application pool Per il funzionamento di
ASP.NET Core è
importante impostare la proprietà
.NET CLR version su
No Managed codeIl passo successivo è pubblicare il sito, ad esempio con
Visual Studio 2017, nella cartella configurata in
IISVisual Studio Publishing il contenuto della cartella sarà simile a questo
esempio file applicazione ASP.NET Core In questo caso
IIS si occupa di eseguire l'applicazione
ASP.NET Core (dotnet.exe) alla prima chiamata e di riavviare l'applicazione in caso di errore.
Nel file
web.config si trova la configurazione di quale processo lanciare (parametro
processPath) e quale applicazione (
arguments):
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore"
path="*"
verb="*"
modules="AspNetCoreModule"
resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet"
arguments=".\WebApplication1.dll"
stdoutLogEnabled="false"
stdoutLogFile=".\logs\stdout"
forwardWindowsAuthToken="true" />
</system.webServer>
</configuration>
<!--ProjectGuid: e47e5e80-07d3-45d0-94b6-3e2178c51228-->
Vedi anche
ASP.NET Core Module,
ASP.NET Core Module configuration reference e
.NET All Downloads