Sdílet prostřednictvím


Moduly služby IIS s ASP.NET Core

Poznámka:

Toto není nejnovější verze tohoto článku. Aktuální verzi najdete ve verzi .NET 8 tohoto článku.

Upozorňující

Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v tématu .NET a .NET Core Zásady podpory. Aktuální verzi najdete ve verzi .NET 8 tohoto článku.

Důležité

Tyto informace se týkají předběžného vydání produktu, který může být podstatně změněn před komerčním vydáním. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.

Aktuální verzi najdete ve verzi .NET 8 tohoto článku.

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
No
Ověření konfigurace
ConfigurationValidationModule
Ano
Chyby HTTP
CustomErrorModule
No Middleware stavových kódů
Vlastní protokolování
CustomLoggingModule
Ano
Výchozí dokument
DefaultDocumentModule
No Výchozí middleware souborů
Ověřování hodnotou hash
DigestAuthenticationModule
Ano
Procházení adresářů
DirectoryListingModule
No 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í souborů do mezipaměti
FileCacheModule
No Middleware pro ukládání odpovědí do mezipaměti
Ukládání do mezipaměti HTTP
HttpCacheModule
No 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
No
Statická komprese
StaticCompressionModule
No Middleware pro kompresi odpovědí
Statický obsah
StaticFileModule
No Middleware statického souboru
Ukládání tokenů do mezipaměti
TokenCacheModule
Ano
Ukládání identifikátorů URI do mezipaměti
UriCacheModule
Ano
Autorizace adresy URL
UrlAuthorizationModule
Ano ASP.NET Core Identity
WebDav
WebDAV
No
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 nejsou funkč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
Anonymníidentifikace
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. Na bočním panelu Připojení správce služby IIS vyberte server IIS. 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 webech. 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 Deny Allow:

    <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 ukládání identifikátoru URI 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 modul ukládání identifikátorů URI do mezipaměti není výhradně nutný ke spuštění hostované aplikace ASP.NET Core, doporučujeme povolit modul ukládání identifikátorů URI do mezipaměti pro všechna nasazení ASP.NET Core.

Modul ukládání do mezipaměti HTTP (HttpCacheModule) implementuje výstupní mezipaměť služby IIS a také logiku pro ukládání položek do mezipaměti HTTP.sys mezipaměti. 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 pro ukládání do mezipaměti má obvykle nepříznivý vliv na výkon a využití prostředků. Přestože modul ukládání do mezipaměti HTTP není striktně nutný ke spuštění hostované aplikace ASP.NET Core, doporučujeme povolit modul ukládání do mezipaměti HTTP pro všechna nasazení ASP.NET Core.

Další materiály