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
.Net Core Windows Server Hosting
installazione moduli
installazione moduli
completamento installazione
completamento installazione
Dopo l'installazione eseguire un iisreset.

Se tutto è andato a buon fine in IIS è presente il modulo AspNetCoreModule
modulo IIS AspNetCoreModule
modulo IIS AspNetCoreModule

A questo punto è possibile creare il sito su IIS
nuovo sito
nuovo sito
configurazione 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 code
elenco application pool
elenco application pool
impostazioni application pool
impostazioni application pool
Per il funzionamento di ASP.NET Core è importante impostare la proprietà .NET CLR version su No Managed code

Il passo successivo è pubblicare il sito, ad esempio con Visual Studio 2017, nella cartella configurata in IIS
Visual Studio Publishing
Visual Studio Publishing
il contenuto della cartella sarà simile a questo
esempio file applicazione ASP.NET Core
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

<?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
Tags:
ASP.NET54 .NET66 IIS28 .NET Core26 Visual Studio37
Potrebbe interessarti anche: