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 moduliinstallazione moduli
completamento installazionecompletamento installazione
Dopo l'installazione eseguire un iisreset.

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

A questo punto è possibile creare il sito su IIS
nuovo sitonuovo sito
configurazione sitoconfigurazione 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 poolelenco application pool
impostazioni application poolimpostazioni 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 PublishingVisual Studio Publishing
il contenuto della cartella sarà simile a questo
esempio file applicazione ASP.NET Coreesempio 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
Potrebbe interessarti anche: