Moduły usług IIS z platformą ASP.NET Core

Niektóre z natywnych modułów usług IIS i wszystkich modułów zarządzanych przez usługi IIS nie mogą przetwarzać żądań dotyczących aplikacji ASP.NET Core. W wielu przypadkach ASP.NET Core oferuje alternatywę dla scenariuszy, które są obsługiwane przez moduły natywne i zarządzane przez usługi IIS.

Moduły natywne

Tabela wskazuje natywne moduły usług IIS, które działają z aplikacjami ASP.NET Core i modułem ASP.NET Core.

Moduł Funkcja z aplikacjami platformy ASP.NET Core opcja ASP.NET Core
Uwierzytelnianie anonimowe
AnonymousAuthenticationModule
Tak
Uwierzytelnianie podstawowe
BasicAuthenticationModule
Tak
Uwierzytelnianie mapowania certyfikatów klienta
CertificateMappingAuthenticationModule
Tak
Grafika komputerowa
CgiModule
Nie.
Weryfikacja konfiguracji
ConfigurationValidationModule
Tak
Błędy HTTP
CustomErrorModule
Nie. Oprogramowanie pośredniczące stron kodu stanu
Rejestrowanie niestandardowe
CustomLoggingModule
Tak
Dokument domyślny
DefaultDocumentModule
Nie. Domyślne oprogramowanie pośredniczące plików
Uwierzytelnianie szyfrowane
DigestAuthenticationModule
Tak
Przeglądanie katalogów
DirectoryListingModule
Nie. Oprogramowanie pośredniczące przeglądania katalogów
Kompresja dynamiczna
DynamicCompressionModule
Tak Oprogramowanie pośredniczące kompresji odpowiedzi
Śledzenie żądań, które zakończyło się niepowodzeniem
FailedRequestsTracingModule
Tak ASP.NET Core Logging
Buforowanie plików
FileCacheModule
Nie. Oprogramowanie pośredniczące buforowania odpowiedzi
Buforowanie HTTP
HttpCacheModule
Nie. Oprogramowanie pośredniczące buforowania odpowiedzi
Rejestrowanie HTTP
HttpLoggingModule
Tak ASP.NET Core Logging
Przekierowywanie HTTP
HttpRedirectionModule
Tak Oprogramowanie pośredniczące ponownego zapisywania adresów URL
Śledzenie HTTP
TracingModule
Tak
Uwierzytelnianie mapowania certyfikatu klienta usług IIS
IISCertificateMappingAuthenticationModule
Tak
Ograniczenia adresów IP i domen
IpRestrictionModule
Tak
Filtry ISAPI
IsapiFilterModule
Tak Oprogramowanie pośredniczące
ISAPI
IsapiModule
Tak Oprogramowanie pośredniczące
Obsługa protokołu
ProtocolSupportModule
Tak
Filtrowanie żądań
RequestFilteringModule
Tak Ponowne zapisywanie adresów URL oprogramowania pośredniczącego IRule
Monitor żądań
RequestMonitorModule
Tak
Ponowne zapisywanie adresów URL†
RewriteModule
Tak Oprogramowanie pośredniczące ponownego zapisywania adresów URL
Dołączanie po stronie serwera
ServerSideIncludeModule
Nie.
Kompresja statyczna
StaticCompressionModule
Nie. Oprogramowanie pośredniczące kompresji odpowiedzi
Zawartość statyczna
StaticFileModule
Nie. Oprogramowanie pośredniczące plików statycznych
Buforowanie tokenu
TokenCacheModule
Tak
Buforowanie identyfikatora URI
UriCacheModule
Tak
Autoryzacja adresów URL
UrlAuthorizationModule
Tak ASP.NET Core Identity
Webdav
WebDAV
Nie.
Uwierzytelnianie systemu Windows
WindowsAuthenticationModule
Tak

† Typy dopasowania modułu isFile ponownego zapisywania adresów URL i isDirectory dopasowywania nie działają z aplikacjami ASP.NET Core ze względu na zmiany struktury katalogów.

Moduły zarządzane

Moduły zarządzane nie działają z hostowanymi aplikacjami ASP.NET Core, gdy wersja środowiska .NET CLR puli aplikacji jest ustawiona na wartość Brak kodu zarządzanego. ASP.NET Core oferuje alternatywy oprogramowania pośredniczącego w kilku przypadkach.

Moduł opcja ASP.NET Core
Anonimowedentyfikacja
DefaultAuthentication
FileAuthorization
Formsauthentication Cookie Oprogramowanie pośredniczące uwierzytelniania
Outputcache Oprogramowanie pośredniczące buforowania odpowiedzi
Profil
RoleManager
ScriptModule-4.0
Sesja Oprogramowanie pośredniczące sesji
UrlAuthorization
UrlMappingsModule Oprogramowanie pośredniczące ponownego zapisywania adresów URL
UrlRoutingModule-4.0 ASP.NET Core Identity
Windowsauthentication

Zmiany aplikacji Menedżera usług IIS

W przypadku konfigurowania ustawień za pomocą Menedżera usług IIS plik web.config aplikacji zostanie zmieniony. W przypadku wdrażania aplikacji i dołączania pliku web.config wszelkie zmiany wprowadzone w Menedżerze usług IIS zostaną zastąpione przez wdrożony plik web.config . Jeśli zmiany zostaną wprowadzone w pliku web.config serwera, skopiuj zaktualizowany plik web.config na serwerze do projektu lokalnego natychmiast.

Wyłączanie modułów usług IIS

Jeśli moduł usług IIS jest skonfigurowany na poziomie serwera, który musi być wyłączony dla aplikacji, dodatek do pliku web.config aplikacji może wyłączyć moduł. Pozostaw moduł i zdezaktywuj go przy użyciu ustawienia konfiguracji (jeśli jest dostępne) lub usuń moduł z aplikacji.

Dezaktywacja modułu

Wiele modułów oferuje ustawienie konfiguracji, które umożliwia ich wyłączenie bez usuwania modułu z aplikacji. Jest to najprostszy i najszybszy sposób dezaktywowania modułu. Na przykład moduł przekierowania HTTP można wyłączyć za pomocą elementu w pliku <httpRedirect> web.config:

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

Aby uzyskać więcej informacji na temat wyłączania modułów z ustawieniami konfiguracji, skorzystaj z linków w sekcji Elementy podrzędne usług IIS <system.webServer>.

Usuwanie modułu

Jeśli zdecydujesz się usunąć moduł z ustawieniem w pliku web.config, odblokuj moduł i odblokuj <modules> najpierw sekcję pliku web.config :

  1. Odblokuj moduł na poziomie serwera. Wybierz serwer usług IIS na pasku bocznym Menedżer usług IIS Połączenie ions. Otwórz moduły w obszarze IIS. Wybierz moduł z listy. Na pasku bocznym Akcje po prawej stronie wybierz pozycję Odblokuj. Jeśli wpis akcji dla modułu będzie wyświetlany jako Blokada, moduł jest już odblokowany i nie jest wymagana żadna akcja. Odblokuj tyle modułów, ile planujesz później usunąć z pliku web.config .

  2. Wdróż aplikację <modules> bez sekcji w pliku web.config. Jeśli aplikacja jest wdrażana przy użyciu pliku web.config zawierającego <modules> sekcję bez odblokowania sekcji najpierw w Menedżerze usług IIS, program Configuration Manager zgłasza wyjątek podczas próby odblokowania sekcji. W związku z tym wdróż aplikację <modules> bez sekcji.

  3. Odblokuj sekcję <modules> pliku web.config. Na pasku bocznym Połączenie ions wybierz witrynę internetową w obszarze Witryny. W obszarze Zarządzanie otwórz Edytor konfiguracji. Użyj kontrolek nawigacji, aby wybrać sekcję system.webServer/modules . Na pasku bocznym Akcje po prawej stronie wybierz pozycję Odblokuj sekcję. Jeśli wpis akcji dla sekcji modułu zostanie wyświetlony jako Sekcja blokady, sekcja modułu jest już odblokowana i nie jest wymagana żadna akcja.

  4. Dodaj sekcję <modules> do lokalnego pliku web.config aplikacji z elementem <remove> , aby usunąć moduł z aplikacji. Dodaj wiele <remove> elementów, aby usunąć wiele modułów. Jeśli zmiany web.config zostaną wprowadzone na serwerze, natychmiast wprowadź te same zmiany w pliku web.config projektu lokalnie. Usunięcie modułu przy użyciu tego podejścia nie ma wpływu na użycie modułu z innymi aplikacjami na serwerze.

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

Aby dodać lub usunąć moduły dla programu IIS Express przy użyciu pliku web.config, zmodyfikuj plik applicationHost.config, aby odblokować sekcję<modules>:

  1. Otwórz plik {APPLICATION ROOT}\.vs\config\applicationhost.config.

  2. Znajdź element dla modułów usług IIS i zmień wartość <section>overrideModeDefault z Deny na Allow:

    <section name="modules"
             allowDefinition="MachineToApplication"
             overrideModeDefault="Allow" />
    
  3. Znajdź sekcję <location path="" overrideMode="Allow"><system.webServer><modules> . W przypadku wszystkich modułów, które chcesz usunąć, ustaw wartość lockItem z true na false. W poniższym przykładzie moduł CGI jest odblokowany:

    <add name="CgiModule" lockItem="false" />
    
  4. Po odblokowaniu <modules> sekcji i poszczególnych modułów możesz dodawać lub usuwać moduły usług IIS przy użyciu pliku web.config aplikacji do uruchamiania aplikacji w programie IIS Express.

Moduł usług IIS można również usunąć za pomocą pliku Appcmd.exe. Podaj polecenie MODULE_NAME i APPLICATION_NAME w poleceniu:

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

Na przykład usuń element DynamicCompressionModule z domyślnej witryny sieci Web:

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

Minimalna konfiguracja modułu

Jedynymi modułami wymaganymi do uruchomienia aplikacji ASP.NET Core są moduł uwierzytelniania anonimowego i moduł ASP.NET Core.

Moduł Buforowanie identyfikatora URI (UriCacheModule) umożliwia usługom IIS buforowanie konfiguracji witryny internetowej na poziomie adresu URL. Bez tego modułu usługi IIS muszą odczytywać i analizować konfigurację każdego żądania, nawet jeśli ten sam adres URL jest wielokrotnie żądany. Analizowanie konfiguracji każdego żądania powoduje znaczną karę za wydajność. Mimo że moduł Buforowanie identyfikatora URI nie jest ściśle wymagany do uruchomienia hostowanej aplikacji ASP.NET Core, zalecamy włączenie modułu Buforowanie URI dla wszystkich wdrożeń ASP.NET Core.

Moduł Buforowanie HTTP (HttpCacheModule) implementuje pamięć podręczną danych wyjściowych usług IIS, a także logikę buforowania elementów w pamięci podręcznej HTTP.sys. Bez tego modułu zawartość nie jest już buforowana w trybie jądra, a profile pamięci podręcznej są ignorowane. Usunięcie modułu Buforowanie HTTP zwykle ma negatywny wpływ na wydajność i użycie zasobów. Mimo że moduł Buforowanie HTTP nie jest ściśle wymagany do uruchomienia hostowanej aplikacji ASP.NET Core, zalecamy włączenie modułu Buforowanie HTTP dla wszystkich wdrożeń ASP.NET Core.

Dodatkowe zasoby