Dela via


Värd för ASP.NET Core i Windows med IIS

Note

Det här är inte den senaste versionen av den här artikeln. För den nuvarande utgåvan, se .NET 9-versionen av den här artikeln .

Warning

Den här versionen av ASP.NET Core stöds inte längre. Mer information finns i supportpolicyn för .NET och .NET Core. För den nuvarande utgåvan, se .NET 9-versionen av den här artikeln .

Important

Den här informationen gäller en förhandsversionsprodukt som kan ändras avsevärt innan den släpps kommersiellt. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, med avseende på den information som tillhandahålls här.

För den nuvarande utgåvan, se .NET 9-versionen av den här artikeln .

Internet Information Services (IIS) är en flexibel, säker och hanterbar webbserver som är värd för webbappar, inklusive ASP.NET Core.

Supported platforms

Följande operativsystem stöds:

  • Windows 7 eller senare
  • Windows Server 2012 R2 eller senare

Appar som publicerats för 32-bitars (x86) eller 64-bitars (x64) distribution stöds. Distribuera en 32-bitars app med en 32-bitars (x86) .NET SDK om inte appen:

  • Kräver det större virtuella minnesadressutrymmet som är tillgängligt för en 64-bitarsapp.
  • Kräver större IIS-stackstorlek.
  • Har 64-bitars inbyggda beroenden.

Installera ASP.NET Core-modulen/värdpaketet

Ladda ned det senaste installationsprogrammet med hjälp av följande länk:

Aktuell .NET Hosting Bundle-installationsprogram (direkt nedladdning)

Mer information om hur du installerar ASP.NET Core-modulen eller hur du installerar olika versioner finns i Installera .NET Hosting Bundle.

Information om hur du laddar ned tidigare versioner av värdpaketet finns i det här GitHub-problemet.

Get started

Information om hur du kommer igång med att vara värd för en webbplats på IIS finns i vår komma igång-guide.

Information om hur du kommer igång med att vara värd för en webbplats i Azure App Services finns i vår distribution till Azure App Service-guiden.

Configuration

Konfigurationsvägledning finns i Avancerad konfiguration.

Distributionsresurser för IIS-administratörer

Overlapped recycle

I allmänhet rekommenderar vi att du använder ett mönster som blågröna distributioner för distributioner utan driftstopp. Funktioner som Overlapped Recycle hjälper, men garanterar inte att du kan göra en distribution utan avbrott. Mer information finns i det här GitHub-problemet.

Valfria klientcertifikat

Information om appar som måste skydda en delmängd av appen med ett certifikat finns i Valfria klientcertifikat.

Additional resources

En självstudie om hur du publicerar en ASP.NET Core-app till en IIS-server finns i Publicera en ASP.NET Core-app till IIS.

Installera .NET-värdpaketet

Operativsystem som stöds

Följande operativsystem stöds:

  • Windows 7 eller senare
  • Windows Server 2012 R2 eller senare

HTTP.sys server (kallades tidigare WebListener) fungerar inte i en omvänd proxykonfiguration med IIS. Kestrel Använd servern.

Information om värdtjänster i Azure finns i Distribuera ASP.NET Core-appar till Azure App Service.

Felsökningsvägledning finns i Felsöka och felsöka ASP.NET Core-projekt.

Supported platforms

Appar som publicerats för 32-bitars (x86) eller 64-bitars (x64) distribution stöds. Distribuera en 32-bitars app med en 32-bitars (x86) .NET SDK om inte appen:

  • Kräver det större virtuella minnesadressutrymmet som är tillgängligt för en 64-bitarsapp.
  • Kräver större IIS-stackstorlek.
  • Har 64-bitars inbyggda beroenden.

Appar som publicerats för 32-bitars (x86) måste ha 32-bitars aktiverat för sina IIS-programpooler. Mer information finns i avsnittet Skapa IIS-webbplatsen.

Använd en 64-bitars (x64) .NET SDK för att publicera en 64-bitarsapp. En 64-bitars runtime måste finnas i värdsystemet.

Hosting models

In-process-värdmodell

Med hjälp av in-process hosting körs en ASP.NET Core-app i samma process som dess IIS-arbetsprocess. In-process hosting ger bättre prestanda jämfört med out-of-process hosting eftersom begäranden inte proxyförs över loopback-adaptern, ett nätverksgränssnitt som returnerar utgående trafik tillbaka till samma dator. IIS hanterar processhantering med Windows Process Activation Service (WAS).

Modulen ASP.NET Core:

  • Utför appinitiering.
    • Läser in CoreCLR.
    • Anropar Program.Main.
  • Hanterar livslängden för den interna IIS-begäran.

Följande diagram illustrerar relationen mellan IIS, ASP.NET Core Module och en app som hanteras i processen:

ASP.NET Core Module i det pågående värdscenariot

  1. En begäran kommer från webben till drivrutinen HTTP.sys i kärnläge.
  2. Drivrutinen dirigerar den interna begäran till IIS på webbplatsens konfigurerade port, vanligtvis 80 (HTTP) eller 443 (HTTPS).
  3. ASP.NET Core-modulen tar emot den interna begäran och skickar den till IIS HTTP Server (IISHttpServer). IIS HTTP Server är en processbaserad serverimplementering för IIS som konverterar begäran från intern till hanterad.

När IIS HTTP Server har bearbetat begäran:

  1. Begäran skickas till pipelinen för ASP.NET Core-mellanprogram.
  2. Pipelinen för mellanprogram hanterar begäran och skickar den som en HttpContext instans till appens logik.
  3. Appens svar skickas tillbaka till IIS via IIS HTTP Server.
  4. IIS skickar svaret till klienten som initierade begäran.

In-process hosting är opt-in för befintliga appar. Webbmallarna ASP.NET Core använder värdmodellen under processen.

CreateDefaultBuilder lägger till en IServer-instans genom att anropa metoden UseIIS för att starta CoreCLR- och vara värd för appen i IIS-arbetsprocessen (w3wp.exe eller iisexpress.exe). Prestandatester indikerar att värd för en .NET-app i processen ger betydligt högre dataflöde för begäranden jämfört med att vara värd för appens out-of-process och proxying-begäranden till Kestrel.

Appar som publiceras som en enda körbar fil kan inte läsas in av den processinterna värdmodellen.

Out-of-process-värdmodell

Eftersom ASP.NET Core-appar körs i en process som är separat från IIS-arbetsprocessen hanterar ASP.NET Core-modulen processhantering. Modulen startar processen för ASP.NET Core-appen när den första begäran kommer och startar om appen om den stängs av eller kraschar. Det här är i stort sett samma beteende som för appar som körs i processen som hanteras av Windows Process Activation Service (WAS).

Följande diagram illustrerar relationen mellan IIS, ASP.NET Core-modulen och en app som hanteras utan process:

ASP.NET Core-modulen i scenariot med out-of-process-värd

  1. Förfrågningar skickas från webben till kärnlägesdrivrutinen HTTP.sys.
  2. Drivrutinen dirigerar begäranden till IIS på webbplatsens konfigurerade port. Den konfigurerade porten är vanligtvis 80 (HTTP) eller 443 (HTTPS).
  3. Modulen vidarebefordrar begäranden till Kestrel på en slumpmässig port för appen. Den slumpmässiga porten är inte 80 eller 443.

ASP.NET Core Module anger porten via en miljövariabel vid start. Tillägget UseIISIntegration konfigurerar servern för att lyssna på http://localhost:{PORT}. Ytterligare kontroller utförs och begäranden som inte kommer från modulen avvisas. Modulen stöder inte HTTPS-vidarebefordring. Begäranden vidarebefordras via HTTP även om de tas emot av IIS via HTTPS.

När Kestrel du har hämtat begäran från modulen vidarebefordras begäran till pipelinen ASP.NET Core-mellanprogram. Pipelinen för mellanprogram hanterar begäran och skickar den som en HttpContext instans till appens logik. Mellanprogram som läggs till av IIS-integrering uppdaterar schemat, fjärr-IP och pathbase för att ta hänsyn till vidarebefordran av begäran till Kestrel. Appens svar skickas tillbaka till IIS, som vidarebefordrar det tillbaka till HTTP-klienten som initierade begäran.

Konfigurationsvägledning för ASP.NET Core Module finns i ASP.NET Core Module (ANCM) för IIS.

Mer information om värdtjänster finns i Värd i ASP.NET Core.

Application configuration

Aktivera IISIntegration-komponenterna

När du skapar en värd i CreateHostBuilder (Program.cs) anropar du CreateDefaultBuilder för att aktivera IIS-integrering:

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        ...

Mer information om CreateDefaultBuilderfinns i .NET Generic Host i ASP.NET Core.

IIS options

Värdmodell under process

Om du vill konfigurera IIS Server-alternativ inkluderar du en tjänstkonfiguration för IISServerOptions i ConfigureServices. I följande exempel inaktiveras AutomaticAuthentication:

services.Configure<IISServerOptions>(options => 
{
    options.AutomaticAuthentication = false;
});
Option Default Setting
AutomaticAuthentication true Om trueställer IIS Server in HttpContext.User autentiserad av Windows-autentisering. Om falsetillhandahåller servern endast en identitet för HttpContext.User och svarar på utmaningar när den uttryckligen begärs av AuthenticationScheme. Windows-autentisering måste vara aktiverat i IIS för att AutomaticAuthentication ska fungera. Mer information finns i Windows-autentisering.
AuthenticationDisplayName null Anger visningsnamnet som visas för användare på inloggningssidor.
AllowSynchronousIO false Om synkron I/O tillåts för HttpContext.Request och HttpContext.Response.
MaxRequestBodySize 30000000 Hämtar eller anger maximal storlek på begärandetexten för HttpRequest. Observera att IIS självt har gräns maxAllowedContentLength, vilket kommer att behandlas före gräns MaxRequestBodySize sätts i IISServerOptions. Om du ändrar MaxRequestBodySize påverkas inte maxAllowedContentLength. Om du vill öka maxAllowedContentLengthlägger du till en post i web.config för att ställa in maxAllowedContentLength till ett högre värde. Mer information finns i Configuration.

Out-of-process-värdmodell

Om du vill konfigurera IIS-alternativ inkluderar du en tjänstkonfiguration för IISOptions i ConfigureServices. I följande exempel förhindras appen från att HttpContext.Connection.ClientCertificatefyllas i :

services.Configure<IISOptions>(options => 
{
    options.ForwardClientCertificate = false;
});
Option Default Setting
AutomaticAuthentication true Om trueanger IIS Integration Middleware autentiserad HttpContext.User av Windows-autentisering. Om falsetillhandahåller mellanprogrammet bara en identitet för HttpContext.User och svarar på utmaningar när det uttryckligen begärs av AuthenticationScheme. Windows-autentisering måste vara aktiverat i IIS för att AutomaticAuthentication ska fungera. Mer information finns i avsnittet Windows-autentisering .
AuthenticationDisplayName null Anger visningsnamnet som visas för användare på inloggningssidor.
ForwardClientCertificate true Om true och begärandehuvudet MS-ASPNETCORE-CLIENTCERT finns i fylls den HttpContext.Connection.ClientCertificate i.

Scenarier för proxyserver och lastbalanserare

IIS Integration Middleware och ASP.NET Core-modulen är konfigurerade för att vidarebefordra:

  • Scheme (HTTP/HTTPS).
  • Fjärr-IP-adress där begäran har sitt ursprung.

IIS Integration Middleware konfigurerar vidarebefordrade rubriker Mellanprogram.

Ytterligare konfiguration kan krävas för appar som finns bakom ytterligare proxyservrar och lastbalanserare. Mer information finns i Konfigurera ASP.NET Core att fungera med proxyservrar och lastbalanserare.

web.config fil

Filen web.config konfigurerar ASP.NET Core-modulen. Skapa, transformera och publicera web.config filen hanteras av ett MSBuild-mål (_TransformWebConfig) när projektet publiceras. Det här målet finns i Web SDK-målen (Microsoft.NET.Sdk.Web). SDK:et anges överst i projektfilen:

<Project Sdk="Microsoft.NET.Sdk.Web">

Om en web.config fil inte finns i projektet skapas filen med rätt processPath och arguments för att konfigurera ASP.NET Core Module och flyttas till publicerade utdata.

Om en web.config fil finns i projektet transformeras filen med rätt processPath och arguments för att konfigurera ASP.NET Core-modulen och flyttas till publicerade utdata. Omvandlingen ändrar inte IIS-konfigurationsinställningarna i filen.

Filen web.config kan ge ytterligare IIS-konfigurationsinställningar som styr aktiva IIS-moduler. Information om IIS-moduler som kan bearbeta begäranden med ASP.NET Core-appar finns i avsnittet IIS-moduler .

Om du vill förhindra att Web SDK omvandlar web.config filen använder du <IsTransformWebConfigDisabled> egenskapen i projektfilen:

<PropertyGroup>
  <IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
</PropertyGroup>

När du inaktiverar webb-SDK:et från att transformera filen processPath ska och arguments anges manuellt av utvecklaren. Mer information finns i ASP.NET Core Module (ANCM) för IIS.

web.config filplats

För att kunna konfigurera ASP.NET Core-modulen korrekt web.config måste filen finnas på innehållsrotsökvägen (vanligtvis appens bassökväg) för den distribuerade appen. Det här är samma plats som webbplatsens fysiska sökväg som tillhandahålls till IIS. Filen web.config krävs i appens rot för att aktivera publicering av flera appar med hjälp av Web Deploy.

Känsliga filer finns på appens fysiska sökväg, till exempel {ASSEMBLY}.runtimeconfig.json, {ASSEMBLY}.xml (XML-dokumentationskommentare) och {ASSEMBLY}.deps.json, där platshållaren {ASSEMBLY} är sammansättningsnamnet. web.config När filen finns och webbplatsen startar normalt, hanterar IIS inte dessa känsliga filer om de begärs. web.config Om filen saknas, är felaktigt namngiven eller inte kan konfigurera platsen för normal start kan IIS hantera känsliga filer offentligt.

Filen web.config måste finnas i distributionen hela tiden, korrekt namngiven och kunna konfigurera platsen för normal start. Ta aldrig bort web.config filen från en produktionsdistribution.

Transform web.config

Om du behöver transformera web.config vid publicering läser du Transformera web.config. Du kan behöva transformera web.config vid publicering för att ange miljövariabler baserat på konfiguration, profil eller miljö.

IIS configuration

Windows Server-operativsystem

Aktivera -webbservern (IIS) serverrollen och konfigurera rolltjänster.

  1. Använd guiden Lägg till roller och funktioner från menyn Hantera eller länken i Serverhanteraren. I steget Serverroller markerar du kryssrutan för Web Server (IIS).

    IIS-rollen för webbservern väljs i steget Välj serverroller.

  2. Efter att Funktioner steg har slutförts, laddas Rolltjänster steg för webbserver (IIS). Välj önskade IIS-rolltjänster eller acceptera standardrolltjänsterna som tillhandahålls.

    Standardrolltjänsterna väljs i steget Välj rolltjänster.

    Windows-autentisering (valfritt)
    Om du vill aktivera Windows-autentisering expanderar du följande noder: Web Server>Security. Välj funktionen Windows-autentisering. Mer information finns i Windows-autentisering <windowsAuthentication> och Konfigurera Windows-autentisering.

    WebSockets (Optional)
    WebSockets stöds med ASP.NET Core 1.1 eller senare. Om du vill aktivera WebSockets expanderar du följande noder: Web Server>Application Development. Välj funktionen WebSocket Protocol. Mer information finns i WebSockets.

  3. Fortsätt med steget Bekräftelse för att installera webbserverrollen och -tjänsterna. En server/IIS-omstart krävs inte när du har installerat -webbservern (IIS) roll.

Windows-skrivbordsoperativsystem

Aktivera IIS-hanteringskonsolen och World Wide Web Services.

  1. Gå till Kontrollpanelen>Program>program och funktioner>Aktivera eller inaktivera Windows-funktioner (till vänster på skärmen).

  2. Öppna noden Internet Information Services. Öppna noden Web Management Tools.

  3. Markera kryssrutan för IIS-hanteringskonsolen.

  4. Markera kryssrutan för World Wide Web Services.

  5. Acceptera standardfunktionerna för World Wide Web Services eller anpassa IIS-funktionerna.

    Windows-autentisering (valfritt)
    Om du vill aktivera Windows-autentisering expanderar du följande noder: World Wide Web Services>Security. Välj funktionen Windows-autentisering. Mer information finns i Windows-autentisering <windowsAuthentication> och Konfigurera Windows-autentisering.

    WebSockets (Optional)
    WebSockets stöds med ASP.NET Core 1.1 eller senare. Om du vill aktivera WebSockets expanderar du följande noder: World Wide Web Services>Application Development Features. Välj funktionen WebSocket Protocol. Mer information finns i WebSockets.

  6. Om IIS-installationen kräver en omstart startar du om systemet.

IIS-hanteringskonsolen och World Wide Web Services väljs i Windows-funktioner.

Installera .NET-värdpaketet

Installera .NET Hosting Bundle på värdsystemet. Paketet installerar .NET Runtime, .NET-biblioteket och ASP.NET Core-modulen. Modulen gör att ASP.NET Core-appar kan köras bakom IIS.

Important

Om värdpaketet installeras före IIS måste paketinstallationen repareras. Kör installationsprogrammet för värdpaket igen när du har installerat IIS.

Om värdpaketet har installerats efter installationen av 64-bitarsversionen (x64) av .NET, kan SDK:er saknas (inga .NET SDK:er har identifierats). För att lösa problemet, se Felsöka och debugga ASP.NET Core-projekt.

Direkt nedladdning (aktuell version)

Ladda ned installationsprogrammet med hjälp av följande länk:

Aktuell .NET Hosting Bundle-installationsprogram (direkt nedladdning)

Tidigare versioner av installationsprogrammet

Så här hämtar du en tidigare version av installationsprogrammet:

  1. Gå till sidan Ladda ned .NET .
  2. Välj önskad .NET-version.
  3. I kolumnen Kör appar – Körning letar du reda på raden i önskad .NET-körningsversion.
  4. Ladda ned installationsprogrammet med hjälp av länken Hosting Bundle.

Warning

Vissa installationsprogram innehåller versionsversioner som har nått sin livslängd (EOL) och som inte längre stöds av Microsoft. Mer information finns i supportpolicyn.

Installera värdpaketet

  1. Kör installationsprogrammet på servern. Följande parametrar är tillgängliga när installationsprogrammet körs från ett administratörskommandogränssnitt:

    • OPT_NO_ANCM=1: Hoppa över att installera ASP.NET Core-modulen.
    • OPT_NO_RUNTIME=1: Hoppa över att installera .NET-körningen. Används när servern endast är värd för fristående distributioner (SCD).
    • OPT_NO_SHAREDFX=1: Hoppa över att installera ASP.NET Shared Framework (ASP.NET runtime). Används när servern endast är värd för fristående distributioner (SCD).
    • OPT_NO_X86=1: Hoppa över att installera x86-körmiljöer. Använd den här parametern när du vet att du inte kommer att vara värd för 32-bitarsappar. Om det finns en möjlighet att du kommer att köra både 32-bitars- och 64-bitarsappar i framtiden, använd inte den här parametern och installera både runtime-miljöerna.
    • OPT_NO_SHARED_CONFIG_CHECK=1: Inaktivera kontrollen för att använda en delad IIS-konfiguration när den delade konfigurationen (applicationHost.config) finns på samma dator som IIS-installationen. Endast tillgängligt för ASP.NET Core 2.2 eller senare som värd för Bundler-installationsprogram. Mer information finns i ASP.NET Core Module (ANCM) för IIS.
  2. Omstart av IIS hämtar en ändring av systemsökvägen, som är en miljövariabel, som görs av installationsprogrammet. Starta om webbservern genom att stoppa Windows Process Activation Service (WAS) och sedan starta om World Wide Web Publishing Service (W3SVC). Starta om systemet eller kör följande kommandon i ett förhöjt kommandogränssnitt:

    net stop was /y
    net start w3svc
    

ASP.NET Core använder inte roll-forward-beteende för korrigeringsversioner av delade ramverkspaket. När du har uppgraderat det delade ramverket genom att installera ett nytt värdpaket startar du om systemet eller kör följande kommandon i ett förhöjt kommandogränssnitt:

net stop was /y
net start w3svc

Note

Information om delad IIS-konfiguration finns i ASP.NET Core-modul med delad IIS-konfiguration.

Installera Web Deploy när du publicerar med Visual Studio

När du distribuerar appar till servrar med Web Deployinstallerar du den senaste versionen av Web Deploy på servern. Om du vill installera Web Deploy använder du Web Platform Installer (WebPI) eller läser IIS-nedladdningar: Webbdistribution. Den bästa metoden är att använda WebPI. WebPI erbjuder en fristående konfiguration och en konfiguration för värdleverantörer.

Skapa IIS-webbplatsen

  1. I värdsystemet skapar du en mapp som innehåller appens publicerade mappar och filer. I följande steg anges mappens sökväg till IIS som den fysiska sökvägen till appen. Mer information om en apps distributionskatalog och filstruktur finns i ASP.NET Core-katalogstruktur.

  2. Öppna serverns nod i panelen Anslutningar i IIS-hanteraren. Högerklicka på mappen Webbplatser. Välj Lägg till webbplats från kontextmenyn.

  3. Ange ett webbplatsnamn och ställ in den fysiska sökvägen till appens distributionsmapp. Ange konfigurationen Binding och skapa webbplatsen genom att välja OK:

    Ange platsnamn, fysisk sökväg och värdnamn i steget Lägg till webbplats.

    Warning

    Jokerbindningar på toppnivå (http://*:80/ och http://+:80) bör inte användas. Jokerteckenbindningar på toppnivå kan öppna din app för säkerhetsrisker. Detta gäller för både starka och svaga jokertecken. Använd explicita värdnamn i stället för jokertecken. Jokerteckenbindning för underdomäner (till exempel *.mysub.com) har inte den här säkerhetsrisken om du kontrollerar hela den överordnade domänen (till skillnad från *.com, som är sårbar). Mer information finns i RFC 9110: HTTP-semantik (avsnitt 7.2: Värd och :auktoritet).

  4. Under noden för servern väljer du applikationspooler.

  5. Högerklicka på webbplatsens apppool och välj Grundläggande inställningar från snabbmenyn.

  6. I fönstret Redigera programpool anger du .NET CLR-version till Ingen hanterad kod:

    Ange ingen hanterad kod för .NET CLR-versionen.

    ASP.NET Core körs i en separat process och hanterar körningen. ASP.NET Core förlitar sig inte på att ladda in desktop CLR (.NET CLR). Core Common Language Runtime (CoreCLR) för .NET startas för att vara värd för appen i arbetsprocessen. Det är valfritt men rekommenderas att ange .NET CLR-version till Ingen hanterad kod.

  7. ASP.NET Core 2.2 eller senare:

    • För en 32-bitars (x86) fristående distribution publicerad med en 32-bitars SDK som använder den processbaserade värdmodellen aktiverar du programpoolen för 32-bitars. I IIS-hanteraren går du till programpooler i sidofältet Anslutningar. Välj appens programpool. I sidofältet Åtgärder väljer du Avancerade inställningar. Ställ in Aktivera 32-bitarsapplikationer till True.

    • För en fristående 64-bitarsdistribution (x64) som använder den processbaserade värdmodellen inaktiverar du apppoolen för 32-bitarsprocesser (x86). I IIS-hanteraren går du till programpooler i sidofältet Anslutningar. Välj appens programpool. I sidofältet Åtgärder väljer du Avancerade inställningar. Ställ in Aktivera 32-bitarsapplikationer till False.

  8. Bekräfta att processmodellidentiteten har rätt behörigheter.

    Om standardidentiteten för apppoolen (processmodell>Identity) ändras från ApplicationPoolIdentity till en annan identitet kontrollerar du att den nya identiteten har de behörigheter som krävs för att få åtkomst till appens mapp, databas och andra nödvändiga resurser. Apppoolen kräver till exempel läs- och skrivåtkomst till mappar där appen läser och skriver filer.

Windows-autentiseringskonfiguration (valfritt)
Mer information finns i Konfigurera Windows-autentisering.

Driftsätt appen

Distribuera appen till mappen fysisk IIS-sökväg som upprättades i avsnittet Skapa IIS-webbplatsen . Webbdistribution är den rekommenderade mekanismen för distribution, men det finns flera alternativ för att flytta appen från projektets publish mapp till värdsystemets distributionsmapp.

Webbdistribution med Visual Studio

Mer information om hur du skapar en publiceringsprofil för användning med Web Deploy finns i Avsnittet om distribution av Visual Studio-publiceringsprofiler för ASP.NET Core-app . Om värdleverantören tillhandahåller en publiceringsprofil eller stöd för att skapa en, laddar du ned profilen och importerar den med hjälp av dialogrutan Publicera i Visual Studio:

Dialogrutan Publicera

Webbdistribution utanför Visual Studio

Webbdistribution kan också användas utanför Visual Studio från kommandoraden. Mer information finns i Verktyget för webbdistribution.

Alternativ till webbdistribution

Använd någon av flera metoder för att flytta appen till värdsystemet, till exempel manuell kopiering, Xcopy, Robocopy eller PowerShell.

Mer information om ASP.NET Core-distribution till IIS finns i avsnittet Distributionsresurser för IIS-administratörer .

Bläddra på webbplatsen

När appen har distribuerats till värdsystemet skickar du en begäran till en av appens offentliga slutpunkter.

I följande exempel är webbplatsen bunden till ett IIS-värdnamnwww.mysite.com för på port80. En begäran görs till http://www.mysite.com:

Microsoft Edge-webbläsaren har läst in startsidan för IIS.

Låsta distributionsfiler

Filer i distributionsmappen låses när appen körs. Låsta filer kan inte skrivas över under distributionen. Om du vill släppa låsta filer i en distribution stoppar du apppoolen med någon av följande metoder:

  • Använd Webbdistribution och referens Microsoft.NET.Sdk.Web i projektfilen. En app_offline.htm fil placeras i roten i webbappkatalogen. När filen finns stänger ASP.NET Core-modulen appen och hanterar app_offline.htm filen under distributionen. Mer information finns i konfigurationsreferensen för ASP.NET Core Module.

  • Stoppa apppoolen manuellt i IIS-hanteraren på servern.

  • Använd PowerShell för att släppa app_offline.htm (kräver PowerShell 5 eller senare):

    $pathToApp = 'PATH_TO_APP'
    
    # Stop the AppPool
    New-Item -Path $pathToApp app_offline.htm
    
    # Provide script commands here to deploy the app
    
    # Restart the AppPool
    Remove-Item -Path $pathToApp app_offline.htm
    

Data protection

ASP.NET Core Data Protection-stacken används av flera ASP.NET Core mellanprogram, inklusive mellanprogram som används i autentisering. Även om dataskydds-API:er inte anropas av användarkod bör dataskydd konfigureras med ett distributionsskript eller i användarkod för att skapa en beständig kryptografisk nyckelarkiv. Om dataskyddet inte har konfigurerats lagras nycklarna i minnet och tas bort när appen startas om.

Om nyckelringen lagras i minnet när appen startas om:

  • Alla cookie-baserade autentiseringstoken är ogiltiga.
  • Användarna måste logga in igen på nästa begäran.
  • Data som skyddas med nyckelringen kan inte längre dekrypteras. Detta kan omfatta CSRF-token och ASP.NET Core MVC TempData-cookies.

Om du vill konfigurera dataskydd under IIS för att bevara nyckelringen använder du en av följande metoder:

  • Skapa registernycklar för dataskydd

    Dataskyddsnycklar som används av ASP.NET Core-appar lagras i registret utanför apparna. Om du vill spara nycklarna för en viss app skapar du registernycklar för apppoolen.

    För fristående IIS-installationer som inte är webfarm kan Data Protection Provision-AutoGenKeys.ps1 PowerShell-skriptet användas för varje apppool som används med en ASP.NET Core-app. Det här skriptet skapar en registernyckel i HKLM-registret som endast är tillgängligt för arbetsprocesskontot för appens apppool. Nycklar krypteras i vila med DPAPI med en datoromfattande nyckel.

    I webbgruppsscenarier kan en app konfigureras för att använda en UNC-sökväg för att lagra sin dataskyddsnyckelring. Som standard krypteras inte dataskyddsnycklarna. Kontrollera att filbehörigheterna för nätverksresursen är begränsade till det Windows-konto som appen körs under. Ett X509-certifikat kan användas för att skydda nycklar i vila. Överväg en mekanism som gör det möjligt för användare att ladda upp certifikat: Placera certifikat i användarens betrodda certifikatarkiv och se till att de är tillgängliga på alla datorer där användarens app körs. Mer information finns i Konfigurera ASP.NET Core Data Protection .

  • Konfigurera IIS-programpoolen för att läsa in användarprofilen

    Den här inställningen finns i avsnittet Process Model under Advanced Settings för apppoolen. Ställ in för att ladda användarprofil till True. När värdet är inställt på Truelagras nycklarna i användarprofilkatalogen och skyddas med DPAPI med en nyckel som är specifik för användarkontot. Nycklar sparas i mappen %LOCALAPPDATA%/ASP.NET/DataProtection-Keys .

    Apppoolens setProfileEnvironment-attribut måste också vara aktiverat. Standardvärdet för setProfileEnvironment är true. I vissa scenarier (till exempel Windows OS) är setProfileEnvironment inställt på false. Om nycklar inte lagras i användarprofilkatalogen som förväntat:

    1. Gå till mappen %windir%/system32/inetsrv/config .
    2. Öppna filenapplicationHost.config .
    3. Leta upp elementet <system.applicationHost><applicationPools><applicationPoolDefaults><processModel>.
    4. Bekräfta att attributet setProfileEnvironment inte finns, vilket standardvärdet är true, eller ange attributets värde som true.
  • Använd filsystemet som ett nyckelringslager

    Justera appkoden för att använda filsystemet som ett nyckelringslager. Använd ett X509-certifikat för att skydda nyckelringen och se till att certifikatet är ett betrott certifikat. Om certifikatet är självsignerat placerar du certifikatet i det betrodda rotarkivet.

    När du använder IIS i en webbgrupp:

    • Använd en fildelning som alla datorer kan komma åt.
    • Distribuera ett X509-certifikat till varje dator. Konfigurera dataskydd i kod.
  • Ange en datoromfattande princip för dataskydd

    Dataskyddssystemet har begränsat stöd för att ange en standardprincip för hela datorn för alla appar som använder Dataskydds-API:erna. Mer information finns i ASP.NET Core dataskyddsöversikt.

Virtual Directories

virtuella IIS-kataloger stöds inte med ASP.NET Core-appar. En app kan hanteras som en underprogram.

Sub-applications

En ASP.NET Core-app kan hanteras som ett IIS-underprogram (underapp). Underappens sökväg blir en del av rotappens URL.

Statiska tillgångslänkar i underappen ska använda tilde-slash-notation (~/). Tilde-slash-notation utlöser en Tag Helper för att lägga till underappens sökvägsbas före den renderade relativa länken. För en underapp på /subapp_pathåterges en bild som är länkad med src="~/image.png" som src="/subapp_path/image.png". Rotappens Static File Middleware bearbetar inte den statiska filbegäran. Begäran bearbetas av underappens mellanprogram för statisk fil.

Om en statisk tillgångs src-attribut är inställt på en absolut sökväg (till exempel src="/image.png") återges länken utan underappens sökvägsbas. Rotappens Static File Middleware försöker hantera tillgången från rotappens webbrot, vilket resulterar i ett 404 – Hittades inte svar om inte den statiska tillgången är tillgänglig från rotappen.

För att köra en ASP.NET Core-app som en underapp till en annan ASP.NET Core-app.

  1. Upprätta en apppool för underappen. Ange .NET CLR-versionen till Ingen hanterad kod eftersom CoreCLR (CoreCLR) (CoreCLR) startas för att vara värd för appen i arbetsprocessen, inte clr-skrivbordet (.NET CLR).

  2. Lägg till rotwebbplatsen i IIS Manager med underappen i en mapp under rotwebbplatsen.

  3. Högerklicka på mappen underapp i IIS Manager och välj Konvertera till program.

  4. I dialogrutan Lägg till program använder du knappen Välj för programpool för att tilldela den apppool som du skapade för underappen. Select OK.

Tilldelningen av en separat app-pool till underappen är ett krav vid användning av in-process-värdmodellen.

Mer information om den processbaserade värdmodellen och hur du konfigurerar ASP.NET Core-modulen finns i ASP.NET Core Module (ANCM) för IIS.

Konfiguration av IIS med web.config

IIS-konfigurationen <system.webServer> påverkas av avsnittet iweb.config för IIS-scenarier som fungerar för ASP.NET Core-appar med ASP.NET Core Module. Till exempel fungerar IIS-konfigurationen för dynamisk komprimering. Om IIS har konfigurerats på servernivå för att använda dynamisk komprimering kan elementet <urlCompression> i appens web.config-fil inaktivera det för en ASP.NET Core-app.

Mer information finns i följande avsnitt:

Information om hur du anger miljövariabler för enskilda appar som körs i isolerade apppooler (stöds för IIS 10.0 eller senare) finns i kommandoavsnittetAppCmd.exe i miljövariabelmiljönVariables <> i IIS-referensdokumentationen.

Avsnitt som inte används av ASP.NET Core

Konfigurationsavsnitt i ASP.NET appar i web.config används inte av ASP.NET Core-appar för konfiguration:

  • <system.web>
  • <appSettings>
  • <connectionStrings>
  • <location>

ASP.NET Core-appar konfigureras med hjälp av andra konfigurationsprovidrar. Mer information finns i Konfigurations- och .NET-körningskonfigurationsinställningar

Application Pools

Apppoolisolering bestäms av värdmodellen:

  • Värdtjänst under drift: Appar måste köras i separata apppooler.
  • ** Värd utanför processen: Vi rekommenderar att du isolerar apparna från varandra genom att köra varje app i sin egen apppool.

Dialogrutan IIS Lägg till webbplats är standardinställningen för att tilldela en enda apppool per app. När ett webbplatsnamn anges överförs texten automatiskt till textrutan Programpool. En ny apppool skapas med webbplatsnamnet när webbplatsen läggs till.

Applikationspool Identity

Med ett apppoolsidentitetskonto kan en app köras under ett unikt konto utan att behöva skapa och hantera domäner eller lokala konton. I IIS 8.0 eller senare skapar IIS Admin Worker Process (WAS) ett virtuellt konto med namnet på den nya apppoolen och kör apppoolens arbetsprocesser under det här kontot som standard. I IIS-hanteringskonsolen under Avancerade inställningar för apppoolen Identity kontrollerar du att är inställd på att använda ApplicationPoolIdentity:

Dialogrutan för avancerade inställningar i applikationspoolen

IIS-hanteringsprocessen skapar en säker identifierare med namnet på apppoolen i Windows Säkerhetssystem. Resurser kan skyddas med hjälp av den här identiteten. Den här identiteten är dock inte ett riktigt användarkonto och visas inte i Windows-användarhanteringskonsolen.

Om IIS-arbetsprocessen kräver förhöjd åtkomst till appen ändrar du åtkomstkontrollistan (ACL) för katalogen som innehåller appen:

  1. Öppna Utforskaren och navigera till katalogen.

  2. Högerklicka på katalogen och välj Egenskaper.

  3. Under fliken Security väljer du knappen Redigera och sedan knappen Lägg till.

  4. Välj knappen Platser och kontrollera att systemet är valt.

  5. Ange IIS AppPool\{APP POOL NAME}, där platshållaren {APP POOL NAME} är namnet på apppoolen, i Ange objektnamnen för att välja område. Välj knappen Kontrollera namn. För DefaultAppPool, kontrollera namnen genom att använda IIS AppPool\DefaultAppPool. När knappen Kontrollera namn är markerad visas värdet DefaultAppPool i området objektnamn. Det går inte att ange apppoolens namn direkt i området objektnamn. Använd IIS AppPool\{APP POOL NAME} format, där platshållaren {APP POOL NAME} är namnet på apppoolen, när du söker efter objektnamnet.

    Dialogrutan Välj användare eller grupper för appmappen: Apppoolens namn på

  6. Select OK.

    Dialogrutan Välj användare eller grupper för appmappen: När du har valt

  7. Läs- och utföranderättigheter ska beviljas som standard. Ange ytterligare behörigheter efter behov.

Åtkomst kan också beviljas i en kommandoprompt med hjälp av verktyget ICACLS. Med hjälp av DefaultAppPool exemplet används följande kommando:

ICACLS C:\sites\MyWebApp /grant "IIS AppPool\DefaultAppPool":F

Mer information finns i ämnet icacls.

HTTP/2 support

HTTP/2- stöds med ASP.NET Core i följande IIS-distributionsscenarier:

  • In-process
    • Windows Server 2016/Windows 10 eller senare; IIS 10 eller senare
    • TLS 1.2 eller senare anslutning
  • Out-of-process
    • Windows Server 2016/Windows 10 eller senare; IIS 10 eller senare
    • Offentliga gränsserveranslutningar använder HTTP/2, men den omvända proxyanslutningen till Kestrel-servern använder HTTP/1.1.
    • TLS 1.2 eller senare anslutning

För en pågående distribution när en HTTP/2-anslutning upprättas rapporterar HttpRequest.ProtocolHTTP/2. För en distribution utanför processen när en HTTP/2-anslutning upprättas rapporterar HttpRequest.ProtocolHTTP/1.1.

Mer information om in-process- och out-of-process-hostingmodeller finns i ASP.NET Core Module (ANCM) för IIS.

HTTP/2 är aktiverat som standard. Anslutningarna återgår till HTTP/1.1 om en HTTP/2-anslutning inte har upprättats. Mer information om HTTP/2-konfiguration med IIS-distributioner finns i HTTP/2 på IIS.

CORS-förfrågningar före flygningen

Det här avsnittet gäller endast för ASP.NET Core-appar som riktar sig mot .NET Framework.

För en ASP.NET Core-app som riktar sig till .NET Framework skickas inte OPTIONS-begäranden till appen som standard i IIS. Information om hur du konfigurerar appens IIS-hanterare i web.config för att skicka OPTIONS-begäranden finns i Aktivera begäranden mellan ursprung i ASP.NET Web API 2: Så här fungerar CORS.

Programinitieringsmodul och tidsgräns för inaktivitet

När den hanteras i IIS av ASP.NET Core Module version 2:

Modul för programinitiering

Gäller för appar som hanteras i processen och som inte är processbaserade.

IIS-programinitiering är en IIS-funktion som skickar en HTTP-begäran till appen när apppoolen startar eller återvinns. Begäran utlöser appen att starta. Som standard skickar IIS en begäran till appens rot-URL (/) för att initiera appen (se ytterligare resurser för mer information om konfiguration).

Bekräfta att funktionen för initiering av IIS-program är aktiverad:

I Windows 7 eller senare skrivbordssystem när du använder IIS lokalt:

  1. Gå till Kontrollpanelen>Program>program och funktioner>Aktivera eller inaktivera Windows-funktioner (till vänster på skärmen).
  2. Öppna Internet Information Services>World Wide Web Services>Programutvecklingsfunktioner.
  3. Markera kryssrutan för programinitiering.

På Windows Server 2008 R2 eller senare:

  1. Öppna guiden Lägg till roller och funktioner.
  2. I panelen Välj rolltjänster öppnar du noden Programutveckling.
  3. Markera kryssrutan för programinitiering.

Använd någon av följande metoder för att aktivera programinitieringsmodulen för platsen:

  • Använda IIS Manager:

    1. Välj programpooler i Anslutningar-panelen.
    2. Högerklicka på appens apppool i listan och välj Avancerade inställningar.
    3. Standardstartläget är OnDemand. Ange Startläge till AlwaysRunning. Select OK.
    4. Öppna noden Platser i panelen Anslutningar.
    5. Högerklicka på appen och välj Hantera webbplats>Avancerade inställningar.
    6. Standardinställningen Förinläsning aktiverad är False. Ange Förinläsning aktiverat till Sant. Select OK.
  • Med lägger du web.configtill elementet <applicationInitialization> med doAppInitAfterRestart inställt true på elementen <system.webServer> i appens web.config-fil:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <location path="." inheritInChildApplications="false">
        <system.webServer>
          <applicationInitialization doAppInitAfterRestart="true" />
        </system.webServer>
      </location>
    </configuration>
    

Idle Timeout

gäller endast för appar som hanteras i processen.

Om du vill förhindra att appen går på tomgång anger du tidsgränsen för inaktivitet för apppoolen med IIS Manager:

  1. Välj programpooler i Anslutningar-panelen.
  2. Högerklicka på appens apppool i listan och välj Avancerade inställningar.
  3. Standardtiden för inaktivitet (minuter) är 20 minuter. Ange tidsgränsen för inaktivitet (minuter) till 0 (noll). Select OK.
  4. Återanvända arbetsprocessen.

För att förhindra att appar som körs utanför processen överskrider tidsgränsen, använd någon av följande metoder:

Ytterligare resurser för programinitieringsmodul och inaktivitetstid.

Distributionsresurser för IIS-administratörer

Additional resources

En självstudie om hur du publicerar en ASP.NET Core-app till en IIS-server finns i Publicera en ASP.NET Core-app till IIS.

Installera .NET-värdpaketet

Operativsystem som stöds

Följande operativsystem stöds:

  • Windows 7 eller senare
  • Windows Server 2008 R2 eller senare

HTTP.sys server (kallades tidigare WebListener) fungerar inte i en omvänd proxykonfiguration med IIS. Kestrel Använd servern.

Information om värdtjänster i Azure finns i Distribuera ASP.NET Core-appar till Azure App Service.

Felsökningsvägledning finns i Felsöka och felsöka ASP.NET Core-projekt.

Supported platforms

Appar som publicerats för 32-bitars (x86) eller 64-bitars (x64) distribution stöds. Distribuera en 32-bitars app med en 32-bitars (x86) .NET SDK om inte appen:

  • Kräver det större virtuella minnesadressutrymmet som är tillgängligt för en 64-bitarsapp.
  • Kräver större IIS-stackstorlek.
  • Har 64-bitars inbyggda beroenden.

Använd en 64-bitars (x64) .NET SDK för att publicera en 64-bitarsapp. En 64-bitars runtime måste finnas i värdsystemet.

ASP.NET Core levereras med Kestrel servern, en standard- och plattformsoberoende HTTP-server.

När du använder IIS eller IIS Express körs appen i en process som är separat från IIS-arbetsprocessen (out-of-process) med Kestrel servern.

Eftersom ASP.NET Core-appar körs i en process som är separat från IIS-arbetsprocessen hanterar modulen processhantering. Modulen startar processen för ASP.NET Core-appen när den första begäran kommer och startar om appen om den stängs av eller kraschar. Det här är i stort sett samma beteende som för appar som körs i processen som hanteras av Windows Process Activation Service (WAS).

Följande diagram illustrerar relationen mellan IIS, ASP.NET Core-modulen och en app som hanteras utan process:

ASP.NET Core-modul

Förfrågningar skickas från webben till kärnlägesdrivrutinen HTTP.sys. Drivrutinen dirigerar begäranden till IIS på webbplatsens konfigurerade port, vanligtvis 80 (HTTP) eller 443 (HTTPS). Modulen vidarebefordrar begäranden till Kestrel på en slumpmässig port för appen, som inte är port 80 eller 443.

Modulen anger porten via en miljövariabel vid start och IIS Integration Middleware konfigurerar servern att lyssna på http://localhost:{port}. Ytterligare kontroller utförs och begäranden som inte kommer från modulen avvisas. Modulen stöder inte HTTPS-vidarebefordring, så begäranden vidarebefordras via HTTP även om de tas emot av IIS via HTTPS.

När Kestrel har hämtat begäran från modulen skickas den vidare till ASP.NET Core-mellanprogramspipelinen. Pipelinen för mellanprogram hanterar begäran och skickar den som en HttpContext instans till appens logik. Mellanprogram som läggs till av IIS-integrering uppdaterar schemat, fjärr-IP och pathbase för att ta hänsyn till vidarebefordran av begäran till Kestrel. Appens svar skickas tillbaka till IIS, vilket skickar tillbaka det till HTTP-klienten som initierade begäran.

CreateDefaultBuilder konfigurerar Kestrel servern som webbserver och aktiverar IIS-integrering genom att konfigurera bassökvägen och porten för ASP.NET Core-modulen.

ASP.NET Core-modulen genererar en dynamisk port som ska tilldelas till serverdelsprocessen. CreateDefaultBuilder UseIISIntegration anropar metoden. UseIISIntegration konfigurerar Kestrel för att lyssna på den dynamiska porten på localhost IP-adressen (127.0.0.1). Om den dynamiska porten är 1234 Kestrel lyssnar du på 127.0.0.1:1234. Den här konfigurationen ersätter andra URL-konfigurationer som tillhandahålls av:

Anrop till UseUrls eller Kestrel's Listen API krävs inte när du använder modulen. Om UseUrls eller Listen anropas Kestrel lyssnar du bara på den port som anges när appen körs utan IIS.

Konfigurationsvägledning för ASP.NET Core Module finns i ASP.NET Core Module (ANCM) för IIS.

Mer information om värdtjänster finns i Värd i ASP.NET Core.

Application configuration

Aktivera IISIntegration-komponenterna

När du skapar en värd i CreateWebHostBuilder (Program.cs) anropar du CreateDefaultBuilder för att aktivera IIS-integrering:

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        ...

Mer information om CreateDefaultBuilderfinns i ASP.NET Core Web Host.

IIS options

Option Default Setting
AutomaticAuthentication true Om trueställer IIS Server in HttpContext.User autentiserad av Windows-autentisering. Om falsetillhandahåller servern endast en identitet för HttpContext.User och svarar på utmaningar när den uttryckligen begärs av AuthenticationScheme. Windows-autentisering måste vara aktiverat i IIS för att AutomaticAuthentication ska fungera. Mer information finns i Windows-autentisering.
AuthenticationDisplayName null Anger visningsnamnet som visas för användare på inloggningssidor.

Om du vill konfigurera IIS-alternativ inkluderar du en tjänstkonfiguration för IISOptions i ConfigureServices. I följande exempel förhindras appen från att HttpContext.Connection.ClientCertificatefyllas i :

services.Configure<IISOptions>(options => 
{
    options.ForwardClientCertificate = false;
});
Option Default Setting
AutomaticAuthentication true Om trueanger IIS Integration Middleware autentiserad HttpContext.User av Windows-autentisering. Om falsetillhandahåller mellanprogrammet bara en identitet för HttpContext.User och svarar på utmaningar när det uttryckligen begärs av AuthenticationScheme. Windows-autentisering måste vara aktiverat i IIS för att AutomaticAuthentication ska fungera. Mer information finns i avsnittet Windows-autentisering .
AuthenticationDisplayName null Anger visningsnamnet som visas för användare på inloggningssidor.
ForwardClientCertificate true Om true och begärandehuvudet MS-ASPNETCORE-CLIENTCERT finns i fylls den HttpContext.Connection.ClientCertificate i.

Scenarier för proxyserver och lastbalanserare

IIS Integration Middleware, som konfigurerar Vidarebefordrade rubriker Mellanprogram, och ASP.NET Core-modulen är konfigurerade för att vidarebefordra schemat (HTTP/HTTPS) och den fjärranslutna IP-adress där begäran kommer. Ytterligare konfiguration kan krävas för appar som finns bakom ytterligare proxyservrar och lastbalanserare. Mer information finns i Konfigurera ASP.NET Core att fungera med proxyservrar och lastbalanserare.

web.config file

Filen web.config konfigurerar ASP.NET Core-modulen. Skapa, transformera och publicera web.config-filen hanteras av ett MSBuild-mål (_TransformWebConfig) när projektet publiceras. Det här målet finns i Web SDK-målen (Microsoft.NET.Sdk.Web). SDK:et anges överst i projektfilen:

<Project Sdk="Microsoft.NET.Sdk.Web">

Om en web.config fil inte finns i projektet skapas filen med rätt processPath och argument för att konfigurera ASP.NET Core-modulen och flyttas till publicerade utdata.

Om en web.config fil finns i projektet transformeras filen med rätt processPath och argument för att konfigurera ASP.NET Core-modulen och flyttas till publicerade utdata. Omvandlingen ändrar inte IIS-konfigurationsinställningarna i filen.

Den web.config filen kan ge ytterligare IIS-konfigurationsinställningar som styr aktiva IIS-moduler. Information om IIS-moduler som kan bearbeta begäranden med ASP.NET Core-appar finns i avsnittet IIS-moduler .

Använd egenskapen IsTransformWebConfigDisabled> i projektfilen för att förhindra att webb-SDK:et omvandlarweb.config-filen<:

<PropertyGroup>
  <IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
</PropertyGroup>

När du inaktiverar Web SDK från att transformera filen bör processPath och argumenten anges manuellt av utvecklaren. Mer information finns i ASP.NET Core Module (ANCM) för IIS.

web.config filplats

För att konfigurera ASP.NET Core-modulen korrekt måste web.config-filen finnas i innehållsrotsökvägen (vanligtvis appens bassökväg) för den distribuerade appen. Det här är samma plats som webbplatsens fysiska sökväg som tillhandahålls till IIS. Den web.config filen krävs i appens rot för att aktivera publicering av flera appar med hjälp av Webbdistribution.

Känsliga filer finns på appens fysiska sökväg, till exempel <sammansättning>.runtimeconfig.json, <sammansättning>.xml (XML-dokumentationskommentar) och <sammansättning>.deps.json. När denweb.config filen finns och webbplatsen startar normalt, hanterar IIS inte dessa känsliga filer om de begärs. Om denweb.config filen saknas, är felaktigt namngiven eller inte kan konfigurera platsen för normal start kan IIS hantera känsliga filer offentligt.

Den web.config filen måste finnas i distributionen hela tiden, korrekt namngiven och kunna konfigurera platsen för normal start. Ta aldrig bort filenweb.config från en produktionsdistribution.

Transform web.config

Om du behöver transformera web.config vid publicering (till exempel ange miljövariabler baserat på konfiguration, profil eller miljö) kan du läsa Transformera web.config.

IIS configuration

Windows Server-operativsystem

Aktivera -webbservern (IIS) serverrollen och konfigurera rolltjänster.

  1. Använd guiden Lägg till roller och funktioner från menyn Hantera eller länken i Serverhanteraren. I steget Serverroller markerar du kryssrutan för Web Server (IIS).

    IIS-rollen för webbservern väljs i steget Välj serverroller.

  2. Efter att Funktioner steg har slutförts, laddas Rolltjänster steg för webbserver (IIS). Välj önskade IIS-rolltjänster eller acceptera standardrolltjänsterna som tillhandahålls.

    Standardrolltjänsterna väljs i steget Välj rolltjänster.

    Windows-autentisering (valfritt)
    Om du vill aktivera Windows-autentisering expanderar du följande noder: Web Server>Security. Välj funktionen Windows-autentisering. Mer information finns i Windows-autentisering <windowsAuthentication> och Konfigurera Windows-autentisering.

    WebSockets (Optional)
    WebSockets stöds med ASP.NET Core 1.1 eller senare. Om du vill aktivera WebSockets expanderar du följande noder: Web Server>Application Development. Välj funktionen WebSocket Protocol. Mer information finns i WebSockets.

  3. Fortsätt med steget Bekräftelse för att installera webbserverrollen och -tjänsterna. En server/IIS-omstart krävs inte när du har installerat -webbservern (IIS) roll.

Windows-skrivbordsoperativsystem

Aktivera IIS-hanteringskonsolen och World Wide Web Services.

  1. Gå till Kontrollpanelen>Program>program och funktioner>Aktivera eller inaktivera Windows-funktioner (till vänster på skärmen).

  2. Öppna noden Internet Information Services. Öppna noden Web Management Tools.

  3. Markera kryssrutan för IIS-hanteringskonsolen.

  4. Markera kryssrutan för World Wide Web Services.

  5. Acceptera standardfunktionerna för World Wide Web Services eller anpassa IIS-funktionerna.

    Windows-autentisering (valfritt)
    Om du vill aktivera Windows-autentisering expanderar du följande noder: World Wide Web Services>Security. Välj funktionen Windows-autentisering. Mer information finns i Windows-autentisering <windowsAuthentication> och Konfigurera Windows-autentisering.

    WebSockets (Optional)
    WebSockets stöds med ASP.NET Core 1.1 eller senare. Om du vill aktivera WebSockets expanderar du följande noder: World Wide Web Services>Application Development Features. Välj funktionen WebSocket Protocol. Mer information finns i WebSockets.

  6. Om IIS-installationen kräver en omstart startar du om systemet.

IIS-hanteringskonsolen och World Wide Web Services väljs i Windows-funktioner.

Installera .NET-värdpaketet

Installera .NET Hosting Bundle på värdsystemet. Paketet installerar .NET Runtime, .NET-biblioteket och ASP.NET Core-modulen. Modulen gör att ASP.NET Core-appar kan köras bakom IIS.

Important

Om värdpaketet installeras före IIS måste paketinstallationen repareras. Kör installationsprogrammet för värdpaket igen när du har installerat IIS.

Om värdpaketet har installerats efter installationen av 64-bitarsversionen (x64) av .NET, kan SDK:er saknas (inga .NET SDK:er har identifierats). För att lösa problemet, se Felsöka och debugga ASP.NET Core-projekt.

Download

  1. Gå till sidan Ladda ned .NET .
  2. Välj önskad .NET-version.
  3. I kolumnen Kör appar – Körning letar du reda på raden i önskad .NET-körningsversion.
  4. Ladda ned installationsprogrammet med hjälp av länken Hosting Bundle.

Warning

Vissa installationsprogram innehåller versionsversioner som har nått sin livslängd (EOL) och som inte längre stöds av Microsoft. Mer information finns i supportpolicyn.

Installera värdpaketet

  1. Kör installationsprogrammet på servern. Följande parametrar är tillgängliga när installationsprogrammet körs från ett administratörskommandogränssnitt:

    • OPT_NO_ANCM=1: Hoppa över att installera ASP.NET Core-modulen.
    • OPT_NO_RUNTIME=1: Hoppa över att installera .NET-körningen. Används när servern endast är värd för fristående distributioner (SCD).
    • OPT_NO_SHAREDFX=1: Hoppa över att installera ASP.NET Shared Framework (ASP.NET runtime). Används när servern endast är värd för fristående distributioner (SCD).
    • OPT_NO_X86=1: Hoppa över att installera x86-körmiljöer. Använd den här parametern när du vet att du inte kommer att vara värd för 32-bitarsappar. Om det finns en möjlighet att du kommer att köra både 32-bitars- och 64-bitarsappar i framtiden, använd inte den här parametern och installera både runtime-miljöerna.
    • OPT_NO_SHARED_CONFIG_CHECK=1: Inaktivera kontrollen för att använda en delad IIS-konfiguration när den delade konfigurationen (applicationHost.config) finns på samma dator som IIS-installationen. Endast tillgängligt för ASP.NET Core 2.2 eller senare som värd för Bundler-installationsprogram. Mer information finns i ASP.NET Core Module (ANCM) för IIS.
  2. Starta om systemet eller kör följande kommandon i ett kommandogränssnitt:

    net stop was /y
    net start w3svc
    

    Omstart av IIS hämtar en ändring av systemsökvägen, som är en miljövariabel, som görs av installationsprogrammet.

Det är inte nödvändigt att manuellt stoppa enskilda platser i IIS när du installerar värdpaketet. Värdbaserade appar (IIS-webbplatser) startas om när IIS startas om. Appar startas igen när de får sin första begäran, inklusive från modulen Programinitiering.

ASP.NET Core implementerar roll-forward-beteende för korrigeringsversioner av delade ramverkspaket. När appar som hanteras av IIS startas om med IIS läses apparna in med de senaste korrigeringsversionerna av deras refererade paket när de får sin första begäran. Om IIS inte startas om startar appar om och uppvisar roll-forward-beteende när deras arbetsprocesser återvinns och de får sin första begäran.

Note

Information om delad IIS-konfiguration finns i ASP.NET Core-modul med delad IIS-konfiguration.

Installera Web Deploy när du publicerar med Visual Studio

När du distribuerar appar till servrar med Web Deployinstallerar du den senaste versionen av Web Deploy på servern. Om du vill installera Web Deploy använder du Web Platform Installer (WebPI) eller IIS Downloads: Web Deploy. Den bästa metoden är att använda WebPI. WebPI erbjuder en fristående konfiguration och en konfiguration för värdleverantörer.

Skapa IIS-webbplatsen

  1. I värdsystemet skapar du en mapp som innehåller appens publicerade mappar och filer. I följande steg anges mappens sökväg till IIS som den fysiska sökvägen till appen. Mer information om en apps distributionskatalog och filstruktur finns i ASP.NET Core-katalogstruktur.

  2. Öppna serverns nod i panelen Anslutningar i IIS-hanteraren. Högerklicka på mappen Webbplatser. Välj Lägg till webbplats från kontextmenyn.

  3. Ange ett webbplatsnamn och ställ in den fysiska sökvägen till appens distributionsmapp. Ange konfigurationen Binding och skapa webbplatsen genom att välja OK:

    Ange platsnamn, fysisk sökväg och värdnamn i steget Lägg till webbplats.

    Warning

    Jokerbindningar på toppnivå (http://*:80/ och http://+:80) bör inte användas. Jokerteckenbindningar på toppnivå kan öppna din app för säkerhetsrisker. Detta gäller för både starka och svaga jokertecken. Använd explicita värdnamn i stället för jokertecken. Jokerteckenbindning för underdomäner (till exempel *.mysub.com) har inte den här säkerhetsrisken om du kontrollerar hela den överordnade domänen (till skillnad från *.com, som är sårbar). Mer information finns i RFC 9110: HTTP-semantik (avsnitt 7.2: Värd och :auktoritet).

  4. Under noden för servern väljer du applikationspooler.

  5. Högerklicka på webbplatsens apppool och välj Grundläggande inställningar från snabbmenyn.

  6. I fönstret Redigera programpool anger du .NET CLR-version till Ingen hanterad kod:

    Ange ingen hanterad kod för .NET CLR-versionen.

    ASP.NET Core körs i en separat process och hanterar körningen. ASP.NET Core förlitar sig inte på att läsa in CLR (.NET CLR) – Core Common Language Runtime (CoreCLR) för .NET startas för att vara värd för appen i arbetsprocessen. Det är valfritt men rekommenderas att ange .NET CLR-version till Ingen hanterad kod.

  7. ASP.NET Core 2.2 eller senare: Inaktivera apppoolen för 32-bitarsprocesser (x86) för en fristående distribution med 64 bitar (x64).

    I sidofältet Åtgärder i IIS Manager-programpooler> väljer du Ange standardvärden för programpool ellerAvancerade inställningar. Leta upp Aktivera 32-bitarsprogram och ange värdet till False. Den här inställningen påverkar inte appar som distribueras för out-of-process-värdtjänster.

  8. Bekräfta att processmodellidentiteten har rätt behörigheter.

    Om standardidentiteten för apppoolen (processmodell>Identity) ändras från ApplicationPoolIdentity till en annan identitet kontrollerar du att den nya identiteten har de behörigheter som krävs för att få åtkomst till appens mapp, databas och andra nödvändiga resurser. Apppoolen kräver till exempel läs- och skrivåtkomst till mappar där appen läser och skriver filer.

Windows-autentiseringskonfiguration (valfritt)
Mer information finns i Konfigurera Windows-autentisering.

Driftsätt appen

Distribuera appen till mappen fysisk IIS-sökväg som upprättades i avsnittet Skapa IIS-webbplatsen . Webbdistribution är den rekommenderade mekanismen för distribution, men det finns flera alternativ för att flytta appen från projektets publiceringsmapp till värdsystemets distributionsmapp.

Webbdistribution med Visual Studio

Mer information om hur du skapar en publiceringsprofil för användning med Web Deploy finns i Avsnittet om distribution av Visual Studio-publiceringsprofiler för ASP.NET Core-app . Om värdleverantören tillhandahåller en publiceringsprofil eller stöd för att skapa en, laddar du ned profilen och importerar den med hjälp av dialogrutan Publicera i Visual Studio:

Dialogrutan Publicera

Webbdistribution utanför Visual Studio

Webbdistribution kan också användas utanför Visual Studio från kommandoraden. Mer information finns i Verktyget för webbdistribution.

Alternativ till webbdistribution

Använd någon av flera metoder för att flytta appen till värdsystemet, till exempel manuell kopiering, Xcopy, Robocopy eller PowerShell.

Mer information om ASP.NET Core-distribution till IIS finns i avsnittet Distributionsresurser för IIS-administratörer .

Bläddra på webbplatsen

När appen har distribuerats till värdsystemet skickar du en begäran till en av appens offentliga slutpunkter.

I följande exempel är webbplatsen bunden till ett IIS-värdnamnwww.mysite.com för på port80. En begäran görs till http://www.mysite.com:

Microsoft Edge-webbläsaren har läst in startsidan för IIS.

Låsta distributionsfiler

Filer i distributionsmappen låses när appen körs. Låsta filer kan inte skrivas över under distributionen. Om du vill släppa låsta filer i en distribution stoppar du apppoolen med någon av följande metoder:

  • Använd Webbdistribution och referens Microsoft.NET.Sdk.Web i projektfilen. En app_offline.htm fil placeras i roten i webbappkatalogen. När filen finns stänger ASP.NET Core-modulen appen och hanterar app_offline.htm filen under distributionen. Mer information finns i konfigurationsreferensen för ASP.NET Core Module.

  • Stoppa apppoolen manuellt i IIS-hanteraren på servern.

  • Använd PowerShell för att släppa app_offline.htm (kräver PowerShell 5 eller senare):

    $pathToApp = 'PATH_TO_APP'
    
    # Stop the AppPool
    New-Item -Path $pathToApp app_offline.htm
    
    # Provide script commands here to deploy the app
    
    # Restart the AppPool
    Remove-Item -Path $pathToApp app_offline.htm
    
    

Data protection

ASP.NET Core Data Protection-stacken används av flera ASP.NET Core mellanprogram, inklusive mellanprogram som används i autentisering. Även om dataskydds-API:er inte anropas av användarkod bör dataskydd konfigureras med ett distributionsskript eller i användarkod för att skapa en beständig kryptografisk nyckelarkiv. Om dataskyddet inte har konfigurerats lagras nycklarna i minnet och tas bort när appen startas om.

Om nyckelringen lagras i minnet när appen startas om:

  • Alla cookie-baserade autentiseringstoken är ogiltiga.
  • Användarna måste logga in igen på nästa begäran.
  • Data som skyddas med nyckelringen kan inte längre dekrypteras. Detta kan omfatta CSRF-token och ASP.NET Core MVC TempData-cookies.

Om du vill konfigurera dataskydd under IIS för att bevara nyckelringen använder du en av följande metoder:

  • Skapa registernycklar för dataskydd

    Dataskyddsnycklar som används av ASP.NET Core-appar lagras i registret utanför apparna. Om du vill spara nycklarna för en viss app skapar du registernycklar för apppoolen.

    För fristående IIS-installationer som inte är webfarm kan Data Protection Provision-AutoGenKeys.ps1 PowerShell-skriptet användas för varje apppool som används med en ASP.NET Core-app. Det här skriptet skapar en registernyckel i HKLM-registret som endast är tillgängligt för arbetsprocesskontot för appens apppool. Nycklar krypteras i vila med DPAPI med en datoromfattande nyckel.

    I webbgruppsscenarier kan en app konfigureras för att använda en UNC-sökväg för att lagra sin dataskyddsnyckelring. Som standard krypteras inte dataskyddsnycklarna. Kontrollera att filbehörigheterna för nätverksresursen är begränsade till det Windows-konto som appen körs under. Ett X509-certifikat kan användas för att skydda nycklar i vila. Överväg en mekanism som gör det möjligt för användare att ladda upp certifikat: Placera certifikat i användarens betrodda certifikatarkiv och se till att de är tillgängliga på alla datorer där användarens app körs. Mer information finns i Konfigurera ASP.NET Core Data Protection .

  • Konfigurera IIS-programpoolen för att läsa in användarprofilen

    Den här inställningen finns i avsnittet Process Model under Advanced Settings för apppoolen. Ställ in för att ladda användarprofil till True. När värdet är inställt på Truelagras nycklarna i användarprofilkatalogen och skyddas med DPAPI med en nyckel som är specifik för användarkontot. Nycklar sparas i mappen %LOCALAPPDATA%/ASP.NET/DataProtection-Keys .

    Apppoolens setProfileEnvironment-attribut måste också vara aktiverat. Standardvärdet för setProfileEnvironment är true. I vissa scenarier (till exempel Windows OS) är setProfileEnvironment inställt på false. Om nycklar inte lagras i användarprofilkatalogen som förväntat:

    1. Gå till mappen %windir%/system32/inetsrv/config .
    2. Öppna filenapplicationHost.config .
    3. Leta upp elementet <system.applicationHost><applicationPools><applicationPoolDefaults><processModel>.
    4. Bekräfta att attributet setProfileEnvironment inte finns, vilket standardvärdet är true, eller ange attributets värde som true.
  • Använd filsystemet som ett nyckelringslager

    Justera appkoden för att använda filsystemet som ett nyckelringslager. Använd ett X509-certifikat för att skydda nyckelringen och se till att certifikatet är ett betrott certifikat. Om certifikatet är självsignerat placerar du certifikatet i det betrodda rotarkivet.

    När du använder IIS i en webbgrupp:

    • Använd en fildelning som alla datorer kan komma åt.
    • Distribuera ett X509-certifikat till varje dator. Konfigurera dataskydd i kod.
  • Ange en datoromfattande princip för dataskydd

    Dataskyddssystemet har begränsat stöd för att ange en standardprincip för hela datorn för alla appar som använder Dataskydds-API:erna. Mer information finns i ASP.NET Core dataskyddsöversikt.

Virtual Directories

virtuella IIS-kataloger stöds inte med ASP.NET Core-appar. En app kan hanteras som en underprogram.

Sub-applications

En ASP.NET Core-app kan hanteras som ett IIS-underprogram (underapp). Underappens sökväg blir en del av rotappens URL.

En underapp bör inte innehålla ASP.NET Core Module som hanterare. Om modulen läggs till som hanterare i en underapps web.config-fil tas ett 500.19 internt serverfel som refererar till den felaktiga konfigurationsfilen emot när du försöker bläddra i underappen.

I följande exempel visas en publicerad web.config fil för en ASP.NET Core-underapp:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <aspNetCore processPath="dotnet" 
      arguments=".\MyApp.dll" 
      stdoutLogEnabled="false" 
      stdoutLogFile=".\logs\stdout" />
  </system.webServer>
</configuration>

När du är värd för en non-ASP.NET Core-underapp under en ASP.NET Core-app tar du uttryckligen bort den ärvda hanteraren i underappens web.config-fil :

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <remove name="aspNetCore" />
    </handlers>
    <aspNetCore processPath="dotnet" 
      arguments=".\MyApp.dll" 
      stdoutLogEnabled="false" 
      stdoutLogFile=".\logs\stdout" />
  </system.webServer>
</configuration>

Statiska tillgångslänkar i underappen ska använda tilde-slash-notation (~/). Tilde-slash-notation utlöser en Tag Helper för att lägga till underappens sökvägsbas före den renderade relativa länken. För en underapp på /subapp_pathåterges en bild som är länkad med src="~/image.png" som src="/subapp_path/image.png". Rotappens Static File Middleware bearbetar inte den statiska filbegäran. Begäran bearbetas av underappens mellanprogram för statisk fil.

Om en statisk tillgångs src-attribut är inställt på en absolut sökväg (till exempel src="/image.png") återges länken utan underappens sökvägsbas. Rotappens Static File Middleware försöker hantera tillgången från rotappens webbrot, vilket resulterar i ett 404 – Hittades inte svar om inte den statiska tillgången är tillgänglig från rotappen.

För att köra en ASP.NET Core-app som en underapp till en annan ASP.NET Core-app.

  1. Upprätta en apppool för underappen. Ange .NET CLR-versionen till Ingen hanterad kod eftersom CoreCLR (CoreCLR) (CoreCLR) startas för att vara värd för appen i arbetsprocessen, inte clr-skrivbordet (.NET CLR).

  2. Lägg till rotwebbplatsen i IIS Manager med underappen i en mapp under rotwebbplatsen.

  3. Högerklicka på mappen underapp i IIS Manager och välj Konvertera till program.

  4. I dialogrutan Lägg till program använder du knappen Välj för programpool för att tilldela den apppool som du skapade för underappen. Select OK.

Tilldelningen av en separat app-pool till underappen är ett krav vid användning av in-process-värdmodellen.

Mer information om den processbaserade värdmodellen och hur du konfigurerar ASP.NET Core-modulen finns i ASP.NET Core Module (ANCM) för IIS.

Konfiguration av IIS med web.config

IIS-konfigurationen <system.webServer> påverkas av avsnittet iweb.config för IIS-scenarier som fungerar för ASP.NET Core-appar med ASP.NET Core Module. Till exempel fungerar IIS-konfigurationen för dynamisk komprimering. Om IIS har konfigurerats på servernivå för att använda dynamisk komprimering kan elementet <urlCompression> i appens web.config-fil inaktivera det för en ASP.NET Core-app.

Mer information finns i följande avsnitt:

Information om hur du anger miljövariabler för enskilda appar som körs i isolerade apppooler (stöds för IIS 10.0 eller senare) finns i kommandoavsnittetAppCmd.exe i miljövariabelmiljönVariables <> i IIS-referensdokumentationen.

Avsnitt som inte används av ASP.NET Core

Konfigurationsavsnitt i ASP.NET 4.x-appar i web.config används inte av ASP.NET Core-appar för konfiguration:

  • <system.web>
  • <appSettings>
  • <connectionStrings>
  • <location>

ASP.NET Core-appar konfigureras med hjälp av andra konfigurationsprovidrar. Mer information finns i Konfiguration.

Application Pools

När du är värd för flera webbplatser på en server rekommenderar vi att du isolerar apparna från varandra genom att köra varje app i en egen apppool. Dialogrutan Lägg till webbplats i IIS är standard för den här konfigurationen. När ett webbplatsnamn anges överförs texten automatiskt till textrutan Programpool. En ny apppool skapas med webbplatsnamnet när webbplatsen läggs till.

Applikationspool Identity

Med ett apppoolsidentitetskonto kan en app köras under ett unikt konto utan att behöva skapa och hantera domäner eller lokala konton. I IIS 8.0 eller senare skapar IIS Admin Worker Process (WAS) ett virtuellt konto med namnet på den nya apppoolen och kör apppoolens arbetsprocesser under det här kontot som standard. I IIS-hanteringskonsolen under Avancerade inställningar för apppoolen Identity kontrollerar du att är inställd på att använda ApplicationPoolIdentity:

Dialogrutan för avancerade inställningar i applikationspoolen

IIS-hanteringsprocessen skapar en säker identifierare med namnet på apppoolen i Windows Säkerhetssystem. Resurser kan skyddas med hjälp av den här identiteten. Den här identiteten är dock inte ett riktigt användarkonto och visas inte i Windows-användarhanteringskonsolen.

Om IIS-arbetsprocessen kräver förhöjd åtkomst till appen ändrar du åtkomstkontrollistan (ACL) för katalogen som innehåller appen:

  1. Öppna Utforskaren och navigera till katalogen.

  2. Högerklicka på katalogen och välj Egenskaper.

  3. Under fliken Security väljer du knappen Redigera och sedan knappen Lägg till.

  4. Välj knappen Platser och kontrollera att systemet är valt.

  5. Ange IIS AppPool\<app_pool_name> i Ange objektnamnen som ska välja område. Välj knappen Kontrollera namn. För DefaultAppPool kontrollerar du namnen med IIS AppPool\DefaultAppPool. När knappen Kontrollera namn är markerad visas värdet DefaultAppPool i området objektnamn. Det går inte att ange apppoolens namn direkt i området objektnamn. Använd formatet IIS AppPool\<app_pool_name> när du söker efter objektnamnet.

    Dialogrutan Välj användare eller grupper för appmappen: Apppoolens namn på

  6. Select OK.

    Dialogrutan Välj användare eller grupper för appmappen: När du har valt

  7. Läs- och utföranderättigheter ska beviljas som standard. Ange ytterligare behörigheter efter behov.

Åtkomst kan också beviljas i en kommandoprompt med hjälp av verktyget ICACLS. Med DefaultAppPool som exempel används följande kommando:

ICACLS C:\sites\MyWebApp /grant "IIS AppPool\DefaultAppPool":F

Mer information finns i ämnet icacls.

HTTP/2 support

HTTP/2 stöds för out-of-process-distributioner som uppfyller följande grundläggande krav:

  • Windows Server 2016/Windows 10 eller senare; IIS 10 eller senare
  • Offentliga gränsserveranslutningar använder HTTP/2, men den omvända proxyanslutningen till Kestrel-servern använder HTTP/1.1.
  • Målramverk: Gäller inte för out-of-process-distributioner, eftersom HTTP/2-anslutningen hanteras helt av IIS.
  • TLS 1.2 eller senare anslutning

Om en HTTP/2-anslutning upprättas rapporterar HttpRequest.ProtocolHTTP/1.1.

HTTP/2 är aktiverat som standard. Anslutningarna återgår till HTTP/1.1 om en HTTP/2-anslutning inte har upprättats. Mer information om HTTP/2-konfiguration med IIS-distributioner finns i HTTP/2 på IIS.

CORS-förfrågningar före flygningen

Det här avsnittet gäller endast för ASP.NET Core-appar som riktar sig mot .NET Framework.

För en ASP.NET Core-app som riktar sig till .NET Framework skickas inte OPTIONS-begäranden till appen som standard i IIS. Information om hur du konfigurerar appens IIS-hanterare i web.config för att skicka OPTIONS-begäranden finns i Aktivera begäranden mellan ursprung i ASP.NET Webb-API 2: Så här fungerar CORS.

Distributionsresurser för IIS-administratörer

Additional resources