IIS-moduler med ASP.NET Core

Anmärkning

Det här är inte den senaste versionen av den här artikeln. Den aktuella versionen finns i .NET 10-versionen av den här artikeln.

Varning

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 .

Vissa av de interna IIS-modulerna och alla IIS-hanterade moduler kan inte bearbeta begäranden för ASP.NET Core-appar. I många fall erbjuder ASP.NET Core ett alternativ till de scenarier som hanteras av interna och hanterade IIS-moduler.

Inbyggda moduler

Tabellen anger interna IIS-moduler som fungerar med ASP.NET Core-appar och ASP.NET Core-modulen.

Modul Fungerar med ASP.NET Core-appar ASP.NET Core-alternativ
Anonym autentisering
AnonymousAuthenticationModule
Yes
Grundläggande autentisering
BasicAuthenticationModule
Yes
Klientcertifieringsmappning för autentisering
CertificateMappingAuthenticationModule
Yes
CGI
CgiModule
Nej
Konfigurationsverifiering
ConfigurationValidationModule
Yes
HTTP-fel
CustomErrorModule
Nej Mellanprogram för statuskodsidor
Anpassad loggning
CustomLoggingModule
Yes
Standarddokument
DefaultDocumentModule
Nej Mellanprogram för standardfiler
Sammanfattad autentisering
DigestAuthenticationModule
Yes
Katalogbläddring
DirectoryListingModule
Nej Katalogbläddring mellanprogram
Dynamisk komprimering
DynamicCompressionModule
Yes Mellanprogram för svarskomprimering
Spårning av misslyckade begäranden
FailedRequestsTracingModule
Yes ASP.NET Core-loggning
Cachelagring av filer
FileCacheModule
Nej Cachelagring av svar mellanprogram
HTTP-cachning
HttpCacheModule
Nej Cachelagring av svar mellanprogram
HTTP-loggning
HttpLoggingModule
Yes ASP.NET Core-loggning
HTTP-omdirigering
HttpRedirectionModule
Yes Mellanprogramvara för URL-omskrivning
HTTP-spårning
TracingModule
Yes
Mappningsautentisering för IIS-klientcertifikat
IISCertificateMappingAuthenticationModule
Yes
IP- och domänbegränsningar
IpRestrictionModule
Yes
ISAPI-filter
IsapiFilterModule
Yes Middleware
ISAPI
IsapiModule
Yes Middleware
Protokollstöd
ProtocolSupportModule
Yes
Begärandefiltrering
RequestFilteringModule
Yes URL-omskrivning av mellanprogram IRule
Övervakare av begäran
RequestMonitorModule
Yes
URL-omskrivning
RewriteModule
Yes Mellanprogramvara för URL-omskrivning
Server-Side inkluderar
ServerSideIncludeModule
Nej
Statisk komprimering
StaticCompressionModule
Nej Mellanprogram för svarskomprimering
Statiskt innehåll
StaticFileModule
Nej Mellanprogram för statisk fil
Token-cachelagring
TokenCacheModule
Yes
URI-caching
UriCacheModule
Yes
URL-auktorisering
UrlAuthorizationModule
Yes ASP.NET Core Identity
WebDav
WebDAV
Nej
Windows-autentisering
WindowsAuthenticationModule
Yes

†URL-omskrivningsmodulens isFile och isDirectory matchningstyper fungerar inte med ASP.NET Core-applikationer på grund av ändringar i katalogstrukturen.

Hanterade moduler

Hanterade moduler fungerar inte med värdbaserade ASP.NET Core-appar när apppoolens .NET CLR-version är inställd på Ingen hanterad kod. ASP.NET Core erbjuder mellanprogramsalternativ i flera fall.

Modul ASP.NET Core-alternativ
AnonymousIdentification
DefaultAuthentication (Standardautentisering)
Filauktorisering
FormsAuthentication Cookie Mellanprogram för autentisering
OutputCache Cachelagring av svar mellanprogram
Profile
Rollhanterare
ScriptModule-4.0
Session Sessionsmellanprogram
UrlAuthorization
UrlMappingsModule Mellanprogramvara för URL-omskrivning
UrlRoutingModule-4.0 ASP.NET Core Identity
Windows-autentisering

Ändringar i IIS Manager-program

När du använder IIS Manager för att konfigurera inställningar ändras appensweb.config fil. Om du distribuerar en app och inkluderar web.configskrivs alla ändringar som görs med IIS Manager över av den distribuerade web.config-filen . Om ändringar görs i serverns web.config-fil kopierar du den uppdaterade web.config filen på servern till det lokala projektet omedelbart.

Inaktivera IIS-moduler

Om en IIS-modul har konfigurerats på servernivå som måste inaktiveras för en app kan ett tillägg till appens web.config-fil inaktivera modulen. Lämna antingen modulen på plats och inaktivera den med hjälp av en konfigurationsinställning (om det är tillgängligt) eller ta bort modulen från appen.

Modul inaktivering

Många moduler erbjuder en konfigurationsinställning som gör att de kan inaktiveras utan att ta bort modulen från appen. Det här är det enklaste och snabbaste sättet att inaktivera en modul. Till exempel kan HTTP-omdirigeringsmodulen inaktiveras med elementet <httpRedirect> i web.config:

<configuration>
  <system.webServer>
    <httpRedirect enabled="false" />
  </system.webServer>
</configuration>

Mer information om hur du inaktiverar moduler med konfigurationsinställningar finns på länkarna i avsnittet Underordnade element i IIS <system.webServer>.

Borttagning av modul

Om du väljer att ta bort en modul med en inställning i web.configlåser du upp modulen och låser upp <modules> avsnittet iweb.config först:

  1. Lås upp modulen på servernivå. Välj IIS-servern i sidofältet IIS Manager-anslutningar . Öppna modulerna i IIS-området . Välj modulen i listan. I sidofältet Åtgärder till höger väljer du Lås upp. Om åtgärdsposten för modulen visas som Lås är modulen redan upplåst och ingen åtgärd krävs. Lås upp så många moduler som du planerar att ta bort från web.config senare.

  2. Distribuera appen utan ett <modules> avsnitt i web.config. Om en app distribueras med en web.config som innehåller <modules> avsnittet utan att först ha låst upp avsnittet i IIS-hanteraren genererar Configuration Manager ett undantag när du försöker låsa upp avsnittet. Distribuera därför appen utan ett <modules> avsnitt.

  3. Lås upp avsnittet i <modules>web.config. I sidofältet Anslutningar väljer du webbplatsen i Webbplatser. Öppna konfigurationsredigeraren i området Hantering. Använd navigeringskontrollerna för att välja avsnittet system.webServer/modules . I sidofältet Åtgärder till höger väljer du för att låsa upp avsnittet. Om åtgärdsposten för modulavsnittet visas som Lås avsnitt är modulavsnittet redan upplåst och ingen åtgärd krävs.

  4. Lägg till ett <modules> avsnitt i appens lokala web.config-fil med ett <remove> element för att ta bort modulen från appen. Lägg till flera <remove> element för att ta bort flera moduler. Om web.config ändringar görs på servern gör du omedelbart samma ändringar i projektets web.config-fil lokalt. Om du tar bort en modul med den här metoden påverkas inte användningen av modulen med andra appar på servern.

    <configuration>
     <system.webServer>
       <modules>
         <remove name="MODULE_NAME" />
       </modules>
     </system.webServer>
    </configuration>
    

För att lägga till eller ta bort moduler för IIS Express med web.config, ändra applicationHost.config så att <modules>-sektionen låses upp:

  1. Öppna {APPLICATION ROOT}\.vs\config\applicationhost.config.

  2. Leta upp elementet <section> för IIS-moduler och ändra overrideModeDefault från Deny till Allow:

    <section name="modules"
             allowDefinition="MachineToApplication"
             overrideModeDefault="Allow" />
    
  3. Hitta avsnittet <location path="" overrideMode="Allow"><system.webServer><modules>. För alla moduler som du vill ta bort anger du lockItem från true till false. I följande exempel är CGI-modulen olåst:

    <add name="CgiModule" lockItem="false" />
    
  4. När avsnittet <modules> och enskilda moduler har låsts upp kan du lägga till eller ta bort IIS-moduler med hjälp av appens web.config-fil för att köra appen på IIS Express.

En IIS-modul kan också tas bort med Appcmd.exe. Ange MODULE_NAME och APPLICATION_NAME i kommandot:

Appcmd.exe delete module MODULE_NAME /app.name:APPLICATION_NAME

Ta till exempel bort DynamicCompressionModule från standardwebbplatsen:

%windir%\system32\inetsrv\appcmd.exe delete module DynamicCompressionModule /app.name:"Default Web Site"

Minsta modulkonfiguration

De enda moduler som krävs för att köra en ASP.NET Core-app är modulen anonym autentisering och ASP.NET Core-modulen.

Med URI Caching Module (UriCacheModule) kan IIS cachelagra webbplatskonfiguration på URL-nivå. Utan den här modulen måste IIS läsa och parsa konfigurationen för varje begäran, även när samma URL begärs upprepade gånger. Om du tolkar konfigurationen vid varje begäran resulterar det i ett betydande prestandastraff. Även om URI-cachelagringsmodulen inte är strikt nödvändig för att en värdbaserad ASP.NET Core-app ska köras rekommenderar vi att URI-cachelagringsmodulen aktiveras för alla ASP.NET Core-distributioner.

HTTP-cachelagringsmodulen (HttpCacheModule) implementerar IIS-utdatacachen och även logiken för cachelagring av objekt i HTTP.sys cacheminnet. Utan den här modulen cachelagras inte längre innehåll i kernelläge och cacheprofiler ignoreras. Att ta bort HTTP-cachelagringsmodulen har vanligtvis negativa effekter på prestanda och resursanvändning. Även om HTTP-cachelagringsmodulen inte är strikt nödvändig för att en värdbaserad ASP.NET Core-app ska köras rekommenderar vi att HTTP-cachelagringsmodulen är aktiverad för alla ASP.NET Core-distributioner.

Ytterligare resurser