Moduły usług IIS z platformą ASP.NET Core
Uwaga
Nie jest to najnowsza wersja tego artykułu. Aby zapoznać się z bieżącą wersją, zapoznaj się z wersją tego artykułu platformy .NET 8.
Ostrzeżenie
Ta wersja ASP.NET Core nie jest już obsługiwana. Aby uzyskać więcej informacji, zobacz .NET i .NET Core Support Policy (Zasady obsługi platformy .NET Core). Aby zapoznać się z bieżącą wersją, zapoznaj się z wersją tego artykułu platformy .NET 8.
Ważne
Te informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany, zanim zostanie wydany komercyjnie. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Aby zapoznać się z bieżącą wersją, zapoznaj się z wersją tego artykułu platformy .NET 8.
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 anonimoweAnonymousAuthenticationModule |
Tak | |
Uwierzytelnianie podstawoweBasicAuthenticationModule |
Tak | |
Uwierzytelnianie mapowania certyfikatów klientaCertificateMappingAuthenticationModule |
Tak | |
CGICgiModule |
Nie. | |
Weryfikacja konfiguracjiConfigurationValidationModule |
Tak | |
Błędy HTTPCustomErrorModule |
Nie. | Oprogramowanie pośredniczące stron kodu stanu |
Rejestrowanie niestandardoweCustomLoggingModule |
Tak | |
Dokument domyślnyDefaultDocumentModule |
Nie. | Domyślne oprogramowanie pośredniczące plików |
Uwierzytelnianie szyfrowaneDigestAuthenticationModule |
Tak | |
Przeglądanie katalogówDirectoryListingModule |
Nie. | Oprogramowanie pośredniczące przeglądania katalogów |
Kompresja dynamicznaDynamicCompressionModule |
Tak | Oprogramowanie pośredniczące kompresji odpowiedzi |
Śledzenie żądań, które zakończyło się niepowodzeniemFailedRequestsTracingModule |
Tak | ASP.NET Core Logging |
Buforowanie plikówFileCacheModule |
Nie. | Oprogramowanie pośredniczące buforowania odpowiedzi |
Buforowanie HTTPHttpCacheModule |
Nie. | Oprogramowanie pośredniczące buforowania odpowiedzi |
Rejestrowanie HTTPHttpLoggingModule |
Tak | ASP.NET Core Logging |
Przekierowywanie HTTPHttpRedirectionModule |
Tak | Oprogramowanie pośredniczące ponownego zapisywania adresów URL |
Śledzenie HTTPTracingModule |
Tak | |
Uwierzytelnianie mapowania certyfikatu klienta usług IISIISCertificateMappingAuthenticationModule |
Tak | |
Ograniczenia adresów IP i domenIpRestrictionModule |
Tak | |
Filtry ISAPIIsapiFilterModule |
Tak | Oprogramowanie pośredniczące |
ISAPIIsapiModule |
Tak | Oprogramowanie pośredniczące |
Obsługa protokołuProtocolSupportModule |
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 serweraServerSideIncludeModule |
Nie. | |
Kompresja statycznaStaticCompressionModule |
Nie. | Oprogramowanie pośredniczące kompresji odpowiedzi |
Zawartość statycznaStaticFileModule |
Nie. | Oprogramowanie pośredniczące plików statycznych |
Buforowanie tokenówTokenCacheModule |
Tak | |
Buforowanie identyfikatorów URIUriCacheModule |
Tak | |
Autoryzacja adresów URLUrlAuthorizationModule |
Tak | ASP.NET Core Identity |
WebDavWebDAV |
Nie. | |
Uwierzytelnianie systemu WindowsWindowsAuthenticationModule |
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 :
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 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 .
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.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.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>
:
Otwórz plik {APPLICATION ROOT}\.vs\config\applicationhost.config.
Znajdź element dla modułów usług IIS i zmień wartość
<section>
overrideModeDefault
zDeny
naAllow
:<section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Allow" />
Znajdź sekcję
<location path="" overrideMode="Allow"><system.webServer><modules>
. W przypadku wszystkich modułów, które chcesz usunąć, ustaw wartośćlockItem
ztrue
nafalse
. W poniższym przykładzie moduł CGI jest odblokowany:<add name="CgiModule" lockItem="false" />
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ą 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ł 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. Analizowanie konfiguracji każdego żądania powoduje znaczną karę za wydajność. 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.