Moduly IIS s ASP.NET Core

některé z nativních modulů služby iis a všechny spravované moduly služby iis nemohou zpracovávat požadavky na aplikace ASP.NET Core. v mnoha případech ASP.NET Core nabízí alternativu k scénářům řešeným nativními a spravovanými moduly služby IIS.

Nativní moduly

tato tabulka uvádí nativní moduly služby IIS, které jsou funkční s ASP.NET Core aplikacemi a modulem ASP.NET Core.

Modul funkce ASP.NET Corech aplikací ASP.NET Core Nastavení
Anonymní ověřování
AnonymousAuthenticationModule
Yes
Základní ověření
BasicAuthenticationModule
Yes
Ověřování mapování certifikace klientů
CertificateMappingAuthenticationModule
Yes
CGI
CgiModule
No
Ověření konfigurace
ConfigurationValidationModule
Yes
Chyby protokolu HTTP
CustomErrorModule
No Middleware stránky stavového kódu
Vlastní protokolování
CustomLoggingModule
Yes
Výchozí dokument
DefaultDocumentModule
No Middleware výchozích souborů
Ověřování hodnotou hash
DigestAuthenticationModule
Yes
Procházení adresářů
DirectoryListingModule
No Middleware procházení adresářů
Dynamická komprese
DynamicCompressionModule
Yes Middleware pro kompresi odpovědí
Trasování chybných žádostí
FailedRequestsTracingModule
Yes ASP.NET Core Protokolu
Ukládání do mezipaměti souboru
FileCacheModule
No Ukládání do mezipaměti middleware pro odpověď
Ukládání do mezipaměti HTTP
HttpCacheModule
No Ukládání do mezipaměti middleware pro odpověď
Protokolování HTTP
HttpLoggingModule
Yes ASP.NET Core Protokolu
Přesměrování protokolu HTTP
HttpRedirectionModule
Yes Middleware pro přepis adres URL
Trasování HTTP
TracingModule
Yes
Ověřování mapování klientských certifikátů služby IIS
IISCertificateMappingAuthenticationModule
Yes
Omezení podle IP adresy a domény
IpRestrictionModule
Yes
Filtry ISAPI
IsapiFilterModule
Yes Middleware
ISAPI
IsapiModule
Yes Middleware
Podpora protokolů
ProtocolSupportModule
Yes
Filtrování požadavků
RequestFilteringModule
Yes Middleware pro přepis adres URL IRule
Sledování požadavků
RequestMonitorModule
Yes
přepsání adresy URL
RewriteModule
Yes Middleware pro přepis adres URL
Začlenění na straně serveru
ServerSideIncludeModule
No
Statická komprese
StaticCompressionModule
No Middleware pro kompresi odpovědí
Statický obsah
StaticFileModule
No Middleware statických souborů
Ukládání do mezipaměti tokenu
TokenCacheModule
Yes
Ukládání do mezipaměti URI
UriCacheModule
Yes
Autorizace adres URL
UrlAuthorizationModule
Yes ASP.NET Core Identity
Ověřování systému Windows
WindowsAuthenticationModule
Yes

†typy a porovnávání v rámci adresy isFile URL isDirectory nefungují s ASP.NET Core aplikacemi z důvodu změn ve struktuře adresářovéslužby.

Spravované moduly

spravované moduly nejsou funkční u hostovaných ASP.NET Core aplikací, pokud je verze .net CLR fondu aplikací nastavená na žádný spravovaný kód. ASP.NET Core nabízí alternativy middlewaru v několika případech.

Modul ASP.NET Core Nastavení
AnonymousIdentification
DefaultAuthentication
Autorace
FormsAuthentication Cookie Middleware ověřování
Outputcache Odpověď Ukládání do mezipaměti middleware
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

Pokud ke konfiguraci nastavení používáte Správce služby IIS, web.config souboru aplikace. Pokud nasazujete aplikaci a web.config, všechny změny provedené ve Správci služby IIS se přepíšou nasazenou web.config souboru. Pokud jsou provedeny změny v souboru web.config, zkopírujte aktualizovaný souborweb.configna serveru okamžitě do místního projektu.

Zakázání modulů služby IIS

Pokud je modul IIS nakonfigurovaný na úrovni serveru, který musí být pro aplikaci zakázaný, může doplněk k souboruweb.configzakázat modul. Buď ponechte modul na místě a pomocí konfiguračního nastavení (pokud je k dispozici) ho deaktivujte, nebo ho z aplikace odeberte.

Deaktivace modulu

Mnoho modulů nabízí konfigurační nastavení, které umožňuje jejich zakázaný přístup bez odebrání modulu z aplikace. Jedná se o nejjednodušší a nejrychlejší způsob deaktivace modulu. Například modul přesměrování HTTP je možné zakázat pomocí elementu vweb.config<httpRedirect> : **

<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 služby <system.webServer> IIS.

Odebrání modulu

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

  1. Odemkněte modul na úrovni serveru. Na bočním panelu Připojení Správce služby IIS vyberte server služby IIS. Otevřete Moduly v oblasti IIS. V seznamu vyberte modul . Na bočním panelu Akce na pravé straně vyberte Odemknout. Pokud se položka akce pro modul zobrazí jako Zamknout, modul je už odemčený a nevyžaduje se žádná akce. Odemkněte tolik modulů, kolik plánujete odebrat zweb.config později.

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

  3. <modules>Odemkněte část web.config. Na bočním panelu Připojení vyberte web v části Weby. V oblasti Správa otevřete Editor konfigurace. K výběru oddílu použijte navigační system.webServer/modules ovládací prvky. Na bočním panelu Akce na pravé straně vyberte Odemknout oddíl. Pokud se položka akce pro oddíl modulu zobrazí jako Lock Section(Zamknout oddíl), část modulu je už odemknutá a nevyžaduje se žádná akce.

  4. Přidejte <modules> oddíl do místního souboru web.config s elementem pro odebrání modulu <remove> z aplikace. Přidáním <remove> více prvků odeberete více modulů. Pokud web.config na serveru, okamžitě proveďte stejné změny souboru projektu v místním web.config souboru. Odebrání modulu tímto přístupem 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, applicationHost.config oddíl <modules> odemknout:

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

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

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

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

Modul služby IIS je také možné odebrat pomocí Appcmd.exe. Do příkazu MODULE_NAME zadejte APPLICATION_NAME a :

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

Například odeberte z DynamicCompressionModule 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í ASP.NET Core jsou modul anonymního ověřování a modul ASP.NET Core Module.

Identifikátor URI Ukládání do mezipaměti Module ( 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 parsovat konfiguraci při každém požadavku, i když se opakovaně požaduje stejná adresa URL. Parsování konfigurace u každého požadavku vede k výraznému snížení výkonu. I když se Ukládání do mezipaměti uri modulu nevyžaduje výhradně ke spuštění hostované aplikace ASP.NET Core, doporučujeme, aby byl identifikátor URI Ukládání do mezipaměti Module povolený pro všechna nasazení ASP.NET Core nasazení.

Modul HTTP Ukládání do mezipaměti Module ( ) implementuje výstupní mezipaměť služby IIS a také logiku ukládání položek do mezipaměti HttpCacheModule HTTP.sys mezipaměti. Bez tohoto modulu se obsah už nebude ukládat 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 modul HTTP Ukládání do mezipaměti není nezbytně nutný ke spuštění hostované aplikace ASP.NET Core, doporučujeme povolit modul HTTP Ukládání do mezipaměti Module pro všechna nasazení ASP.NET Core nasazení.

Další zdroje informací