Moduly služby IIS s ASP.NET Core

Některé nativní moduly SLUŽBY IIS a všechny spravované moduly IIS nemůžou zpracovávat požadavky na aplikace ASP.NET Core. V mnoha případech nabízí ASP.NET Core alternativu ke scénářům, které řeší nativní a spravované moduly služby IIS.

Nativní moduly

Tabulka označuje nativní moduly SLUŽBY IIS, které jsou funkční s aplikacemi ASP.NET Core a modulem ASP.NET Core.

Modul Funkční s aplikacemi ASP.NET Core možnost ASP.NET jádra
Anonymní ověřování
AnonymousAuthenticationModule
Ano
Základní ověřování
BasicAuthenticationModule
Ano
Ověřování mapování certifikace klienta
CertificateMappingAuthenticationModule
Ano
CGI
CgiModule
Číslo
Ověření konfigurace
ConfigurationValidationModule
Ano
Chyby HTTP
CustomErrorModule
Číslo Middleware stavových kódů
Vlastní protokolování
CustomLoggingModule
Ano
Výchozí dokument
DefaultDocumentModule
Číslo Výchozí middleware souborů
Ověřování hodnotou hash
DigestAuthenticationModule
Ano
Procházení adresářů
DirectoryListingModule
Číslo Middleware pro procházení adresářů
Dynamická komprese
DynamicCompressionModule
Ano Middleware pro kompresi odpovědí
Trasování neúspěšných požadavků
FailedRequestsTracingModule
Ano Protokolování jádra ASP.NET
Ukládání do mezipaměti souborů
FileCacheModule
Číslo Middleware pro ukládání odpovědí do mezipaměti
Ukládání do mezipaměti HTTP
HttpCacheModule
Číslo Middleware pro ukládání odpovědí do mezipaměti
Protokolování HTTP
HttpLoggingModule
Ano Protokolování jádra ASP.NET
Přesměrování HTTP
HttpRedirectionModule
Ano Middleware pro přepis adres URL
Trasování HTTP
TracingModule
Ano
Ověřování mapování klientských certifikátů služby IIS
IISCertificateMappingAuthenticationModule
Ano
Omezení IP adres a domén
IpRestrictionModule
Ano
Filtry ISAPI
IsapiFilterModule
Ano Middleware
ISAPI
IsapiModule
Ano Middleware
Podpora protokolu
ProtocolSupportModule
Ano
Filtrování požadavků
RequestFilteringModule
Ano Middleware pro přepis adres URL IRule
Monitorování požadavků
RequestMonitorModule
Ano
Přepsání adresy URL†
RewriteModule
Ano Middleware pro přepis adres URL
Zahrnutí na straně serveru
ServerSideIncludeModule
Číslo
Statická komprese
StaticCompressionModule
Číslo Middleware pro kompresi odpovědí
Statický obsah
StaticFileModule
Číslo Middleware statického souboru
Ukládání do mezipaměti tokenů
TokenCacheModule
Ano
Ukládání do mezipaměti identifikátoru URI
UriCacheModule
Ano
Autorizace adresy URL
UrlAuthorizationModule
Ano ASP.NET Core Identity
Webdav
WebDAV
Číslo
Ověřování systému Windows
WindowsAuthenticationModule
Ano

†Vypis isFile adres URL a isDirectory typy shody modulu nefungují s aplikacemi ASP.NET Core kvůli změnám v adresářové struktuře.

Spravované moduly

Spravované moduly nejsoufunkční s hostovanými aplikacemi ASP.NET Core, pokud je verze .NET CLR fondu aplikací nastavená na Žádný spravovaný kód. ASP.NET Core nabízí v několika případech alternativy middlewaru.

Modul možnost ASP.NET jádra
Anonymousidentification
DefaultAuthentication
FileAuthorization
FormsAuthentication Cookie Middleware pro ověřování
Outputcache Middleware pro ukládání odpovědí do mezipaměti
Profil
Rolemanager
ScriptModule-4.0
Relace Middleware relace
UrlAuthorization
UrlMappingsModule Middleware pro přepis adres URL
UrlRoutingModule-4.0 ASP.NET Core Identity
WindowsAuthentication

Změny aplikace Správce služby IIS

Při konfiguraci nastavení pomocí Správce služby IIS se změní soubor web.config aplikace. Pokud nasazujete aplikaci a včetně souboru web.config, všechny změny provedené pomocí Správce služby IIS se přepíšou nasazeným souborem web.config . Pokud se změny v souboru web.config serveru provede, okamžitě zkopírujte aktualizovaný soubor web.config na serveru do místního projektu.

Zakázání modulů IIS

Pokud je modul SLUŽBY IIS nakonfigurovaný na úrovni serveru, která musí být pro aplikaci zakázaná, může doplněk souboru web.config aplikace tento modul zakázat. Buď nechte modul na místě a deaktivujte ho pomocí nastavení konfigurace (pokud je k dispozici) nebo modul z aplikace odeberte.

Deaktivace modulu

Mnoho modulů nabízí nastavení konfigurace, které umožňuje jejich zakázání bez odebrání modulu z aplikace. Jedná se o nejjednodušší a nejrychlejší způsob deaktivace modulu. Například modul http Redirection může být zakázán s elementem <httpRedirect> web.config:

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

Další informace o zakázání modulů s nastavením konfigurace najdete na odkazech v části Podřízené elementy serveru IIS <system.webServer>.

Odebrání modulu

Pokud se rozhodnete odebrat modul s nastavením v souboru web.config, nejprve odemkněte modul a odemkněte <modules> oddíl web.config :

  1. Odemkněte modul na úrovni serveru. Vyberte server IIS ve Správci služby IIS Připojení bočním panelu. Otevřete moduly v oblasti SLUŽBY IIS. Vyberte modul v seznamu. Na bočním panelu Akcí vpravo vyberte Odemknout. Pokud se položka akce pro modul zobrazí jako Zámek, modul je už odemknutý a nevyžaduje se žádná akce. Odemkněte tolik modulů, kolik budete chtít později odebrat z web.config .

  2. Nasaďte aplikaci bez oddílu <modules> v souboru web.config. Pokud je aplikace nasazená pomocí souboru web.config obsahujícího <modules> oddíl bez nutnosti odemknutí oddílu nejprve ve Správci služby IIS, správce konfigurace vyvolá výjimku při pokusu o odemknutí oddílu. Proto nasaďte aplikaci bez oddílu <modules> .

  3. <modules> Odemkněte část web.config. Na bočním panelu Připojení vyberte web na webu Weby. V oblasti Správa otevřete Editor konfigurace. Pomocí navigačních ovládacích prvků vyberte system.webServer/modules oddíl. Na bočním panelu Akce vpravo vyberte odemknout oddíl. Pokud se položka akce pro oddíl modulu zobrazí jako Zamknout oddíl, oddíl modulu je už odemknutý a nevyžaduje se žádná akce.

  4. <modules> Přidejte oddíl do místního souboru web.config aplikace s elementem <remove> pro odebrání modulu z aplikace. Přidání více <remove> prvků pro odebrání více modulů Pokud jsou na serveru provedeny změny web.config, okamžitě proveďte stejné změny v souboru web.config projektu místně. Odebrání modulu pomocí tohoto přístupu nemá vliv na použití modulu s jinými aplikacemi na serveru.

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

Pokud chcete přidat nebo odebrat moduly pro IIS Express pomocí web.config, upravte applicationHost.config a odemkněte <modules> oddíl:

  1. Otevřete soubor {APPLICATION ROOT}\.vs\config\applicationhost.config.

  2. <section> Vyhledejte element pro moduly služby IIS a změňte overrideModeDefault hodnotu z DenyAllow:

    <section name="modules"
             allowDefinition="MachineToApplication"
             overrideModeDefault="Allow" />
    
  3. <location path="" overrideMode="Allow"><system.webServer><modules> Vyhledejte oddíl. Pro všechny moduly, které chcete odebrat, nastavte lockItem na falsetrue hodnotu . V následujícím příkladu je modul CGI odemknutý:

    <add name="CgiModule" lockItem="false" />
    
  4. Po odemknutí oddílu <modules> a jednotlivých modulů můžete přidat nebo odebrat moduly IIS pomocí souboru web.config aplikace pro spuštění aplikace ve službě IIS Express.

Modul IIS lze také odebrat pomocí Appcmd.exe. MODULE_NAME Zadejte příkaz a APPLICATION_NAME v příkazu:

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

Například odeberte DynamicCompressionModule z výchozího webu:

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

Minimální konfigurace modulu

Jedinými moduly potřebnými ke spuštění aplikace ASP.NET Core jsou anonymní ověřovací modul a modul ASP.NET Core.

Modul URI Ukládání do mezipaměti (UriCacheModule) umožňuje službě IIS ukládat konfiguraci webu do mezipaměti na úrovni adresy URL. Bez tohoto modulu musí služba IIS číst a analyzovat konfiguraci u každého požadavku, i když se stejná adresa URL opakuje. Analýza konfigurace každého požadavku vede k významnému snížení výkonu. Přestože pro spuštění hostované aplikace ASP.NET Core se identifikátor URI Ukládání do mezipaměti modul nevyžaduje, doporučujeme povolit identifikátor URI Ukládání do mezipaměti modulu pro všechna nasazení ASP.NET Core.

Modul HTTP Ukládání do mezipaměti (HttpCacheModule) implementuje výstupní mezipaměť služby IIS a také logiku pro ukládání položek do mezipaměti HTTP.sys. Bez tohoto modulu se obsah už neukládají do mezipaměti v režimu jádra a profily mezipaměti se ignorují. Odebrání modulu HTTP Ukládání do mezipaměti má obvykle nepříznivý vliv na výkon a využití prostředků. Přestože se pro hostovanou aplikaci ASP.NET Core nevyžaduje modul HTTP Ukládání do mezipaměti, doporučujeme povolit modul HTTP Ukládání do mezipaměti pro všechna nasazení ASP.NET Core.

Další prostředky