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

Uwaga

Nie jest to najnowsza wersja tego artykułu. Aby zapoznać się z aktualną wersją, zobacz artykuł w wersji .NET 10.

Ostrzeżenie

Ta wersja ASP.NET Core nie jest już obsługiwana. Aby uzyskać więcej informacji, zobacz zasady pomocy technicznej platformy .NET i platformy .NET Core. Aby zapoznać się z aktualną wersją, zobacz artykuł w wersji .NET 10.

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ł Działa z aplikacjami ASP.NET Core opcja ASP.NET Core
Uwierzytelnianie anonimowe
AnonymousAuthenticationModule
Tak
Uwierzytelnianie podstawowe
BasicAuthenticationModule
Tak
Uwierzytelnianie za pomocą mapowania certyfikatu klienta
CertificateMappingAuthenticationModule
Tak
CGI
CgiModule
Nie.
Weryfikacja konfiguracji
ConfigurationValidationModule
Tak
Błędy HTTP
CustomErrorModule
Nie. Oprogramowanie pośredniczące stron kodów stanu HTTP
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 nieudanych żądań
FailedRequestsTracingModule
Tak Rejestrowanie zdarzeń w ASP.NET Core
Buforowanie plików
FileCacheModule
Nie. Oprogramowanie pośredniczące do buforowania odpowiedzi
Buforowanie HTTP
HttpCacheModule
Nie. Oprogramowanie pośredniczące do buforowania odpowiedzi
Rejestrowanie HTTP
HttpLoggingModule
Tak Rejestrowanie zdarzeń w ASP.NET Core
Przekierowywanie HTTP
HttpRedirectionModule
Tak Oprogramowanie pośredniczące do przepisywania adresów URL
Śledzenie HTTP
TracingModule
Tak
Uwierzytelnianie przy użyciu mapowania certyfikatów klienta w usługach 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 Oprogramowanie pośredniczące do przepisywania adresów URL IRule
Monitor żądań
RequestMonitorModule
Tak
Przepisywanie adresów URL
RewriteModule
Tak Oprogramowanie pośredniczące do przepisywania 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 tokenów
TokenCacheModule
Tak
Buforowanie URI
UriCacheModule
Tak
Autoryzacja adresów URL
UrlAuthorizationModule
Tak ASP.NET Core Identity
WebDav
WebDAV
Nie.
Uwierzytelnianie systemu Windows
WindowsAuthenticationModule
Tak

†Typy dopasowania isFile i isDirectory modułu przepisywania adresów URL nie działają w przypadku aplikacji ASP.NET Core ze względu na zmiany w strukturze katalogów.

Moduły zarządzane

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

Moduł opcja ASP.NET Core
Identyfikacja anonimowa
Domyślne uwierzytelnianie
Autoryzacja pliku
FormsAuthentication Cookie oprogramowanie pośredniczące uwierzytelniania
OutputCache Oprogramowanie pośredniczące do buforowania odpowiedzi
Profil
RoleManager
ScriptModule-4.0
Sesja Oprogramowanie pośredniczące sesyjne
UrlAuthorization
UrlMappingsModule Middleware do przepisywania 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 za pomocą ustawień konfiguracji, skorzystaj z łączy w sekcji Elementy podrzędne elementu IIS <system.webServer>.

Usuwanie modułu

Jeśli chcesz usunąć moduł za pomocą ustawienia w web.config, najpierw odblokuj moduł i sekcję <modules>web.config:

  1. Odblokuj moduł na poziomie serwera. Wybierz serwer IIS na pasku bocznym Połączenia menedżera usług IIS. Otwórz moduły w obszarze IIS. Wybierz moduł z listy. Na pasku bocznym Akcje po prawej stronie wybierz pozycję Odblokuj. Jeśli pozycja akcji dla modułu jest wyświetlana jako Lock, moduł jest już odblokowany i nie trzeba podejmować żadnych działań. Odblokuj tyle modułów, ile planujesz później usunąć z pliku web.config .

  2. Wdróż aplikację bez sekcji <modules> w pliku web.config. Jeśli aplikacja zostanie wdrożona z plikiem web.config zawierającym sekcję <modules> bez uprzedniego odblokowania tej sekcji w Menedżerze usług IIS, program Configuration Manager zgłosi wyjątek podczas próby odblokowania tej sekcji. Dlatego wdroż aplikację bez sekcji <modules>.

  3. Odblokuj sekcję <modules> pliku web.config. Na pasku bocznym Połączenia 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 w 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 <section> dla modułów IIS i zmień 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 sekcji <modules> oraz poszczególnych modułów możesz swobodnie dodawać lub usuwać moduły IIS w pliku web.config aplikacji podczas uruchamiania aplikacji w IIS Express.

Moduł usług IIS można również usunąć za pomocą Appcmd.exe. Podaj 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ł buforowania identyfikatora URI (UriCacheModule) umożliwia usługom IIS buforowanie konfiguracji witryny sieci Web 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. Parsowanie konfiguracji przy każdym żądaniu powoduje znaczny spadek wydajności. Mimo że moduł buforowania identyfikatora URI nie jest ściśle wymagany do uruchomienia hostowanej aplikacji ASP.NET Core, zalecamy włączenie modułu buforowania identyfikatora URI dla wszystkich wdrożeń ASP.NET Core.

Moduł buforowania 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 buforowania HTTP zwykle ma negatywny wpływ na wydajność i użycie zasobów. Mimo że moduł buforowania HTTP nie jest ściśle wymagany do uruchomienia hostowanej aplikacji ASP.NET Core, zalecamy włączenie modułu buforowania HTTP dla wszystkich wdrożeń ASP.NET Core.

Dodatkowe zasoby