Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Примечание.
Это не последняя версия этой статьи. В текущей версии см. версию .NET 10 этой статьи.
Предупреждение
Эта версия ASP.NET Core больше не поддерживается. Дополнительные сведения см. в политике поддержки .NET и .NET Core. В текущем выпуске см . версию .NET 9 этой статьи.
Некоторые собственные модули IIS и все управляемые модули IIS не могут применяться для обработки запросов в приложениях ASP.NET Core. Во многих случаях сценарии, которые обрабатывают собственные и управляемые модули IIS, можно переложить на ASP.NET Core.
Собственные модули
В этой таблице перечислены собственные модули IIS, которые работают с приложениями ASP.NET Core и модулем ASP.NET Core.
| Модуль | Доступность для приложений ASP.NET Core | Вариант ASP.NET Core |
|---|---|---|
Анонимная аутентификацияAnonymousAuthenticationModule |
Да | |
Обычная проверка подлинностиBasicAuthenticationModule |
Да | |
Аутентификация с сопоставлением сертификата клиентаCertificateMappingAuthenticationModule |
Да | |
CGICgiModule |
No | |
Проверка конфигурацииConfigurationValidationModule |
Да | |
Ошибки HTTPCustomErrorModule |
No | ПО промежуточного слоя для страниц кода состояния |
Настраиваемое ведение журналаCustomLoggingModule |
Да | |
Документ по умолчаниюDefaultDocumentModule |
No | ПО промежуточного слоя для файлов по умолчанию |
Дайджест-проверка подлинностиDigestAuthenticationModule |
Да | |
Просмотр каталоговDirectoryListingModule |
No | ПО промежуточного слоя для просмотра каталогов |
Динамическое сжатиеDynamicCompressionModule |
Да | ПО промежуточного слоя сжатия ответов |
Трассировка неудачно завершенных запросовFailedRequestsTracingModule |
Да | Ведение журналов ASP.NET Core |
Кэширование файловFileCacheModule |
No | ПО промежуточного слоя для кэширования ответов |
Кэширование HTTPHttpCacheModule |
No | ПО промежуточного слоя для кэширования ответов |
Ведение журнала HTTPHttpLoggingModule |
Да | Ведение журналов ASP.NET Core |
Перенаправление HTTPHttpRedirectionModule |
Да | ПО промежуточного слоя для переопределения URL-адресов |
Трассировка HTTPTracingModule |
Да | |
Аутентификация IIS с сопоставлением сертификата клиентаIISCertificateMappingAuthenticationModule |
Да | |
Ограничения IP-адресов и доменовIpRestrictionModule |
Да | |
Фильтры ISAPIIsapiFilterModule |
Да | ПО промежуточного слоя |
ISAPIIsapiModule |
Да | ПО промежуточного слоя |
Поддержка протоколовProtocolSupportModule |
Да | |
Фильтрация запросовRequestFilteringModule |
Да |
ПО промежуточного слоя для переопределения URL-адресовIRule |
Монитор запросовRequestMonitorModule |
Да | |
Переопределение URL-адресов†RewriteModule |
Да | ПО промежуточного слоя для переопределения URL-адресов |
Включения на стороне сервераServerSideIncludeModule |
No | |
Статическое сжатиеStaticCompressionModule |
No | ПО промежуточного слоя сжатия ответов |
Статическое содержимоеStaticFileModule |
No | ПО промежуточного слоя для статических файлов |
Кэшировании маркеровTokenCacheModule |
Да | |
Кэширование URIUriCacheModule |
Да | |
Авторизация URL-адресаUrlAuthorizationModule |
Да | ASP.NET Core Identity |
Протокол WebDAVWebDAV |
No | |
Проверка подлинности Windows.WindowsAuthenticationModule |
Да |
†В модуле переопределения URL-адресов типы сопоставления isFile и isDirectory не работают с приложениями ASP.NET Core из-за изменений в структуре каталогов.
Управляемые модули
Управляемые модули не работают с размещенными приложениями ASP.NET Core, если для пула приложения указана версия среды CLR .NET Без управляемого кода. Для некоторых случаев ASP.NET Core предлагает альтернативное ПО промежуточного слоя.
| Модуль | Вариант ASP.NET Core |
|---|---|
| AnonymousIdentification | |
| DefaultAuthentication | |
| FileAuthorization | |
| FormsAuthentication | ПО промежуточного слоя для аутентификации на основе файлов Cookie |
| OutputCache | ПО промежуточного слоя для кэширования ответов |
| Профиль | |
| RoleManager | |
| ScriptModule-4.0 | |
| Сеанс | ПО промежуточного слоя для сеансов |
| UrlAuthorization | |
| UrlMappingsModule | ПО промежуточного слоя для переопределения URL-адресов |
| UrlRoutingModule-4.0 | ASP.NET Core Identity |
| WindowsAuthentication |
Изменения в приложении диспетчера IIS
Если для настройки параметров применяется диспетчер IIS, изменяется файл web.config для приложения. Если вы развертываете приложение с файлом web.config, все внесенные через диспетчер IIS изменения будут перезаписаны значениями из развертываемого файла web.config. Если вы вносите изменения в файл web.config на сервере, сразу же скопируйте обновленный файл web.config с сервера в локальный проект.
Отключение модулей IIS
Если на уровне сервера настроен модуль IIS, который нужно отключить для конкретного приложения, это можно сделать добавлением параметров в файл web.config. Здесь вы можете сохранить модуль, отключив его с помощью соответствующего параметра конфигурации (если поддерживается), либо полностью удалить модуль из приложения.
Отключение модуля
Многие модули поддерживают параметр конфигурации, позволяющий отключить их без удаления модуля из приложения. Это самый простой и быстрый способ отключить отдельный модуль. Например, можно отключить модуль перенаправления HTTP с помощью элемента <httpRedirect> в файле web.config:
<configuration>
<system.webServer>
<httpRedirect enabled="false" />
</system.webServer>
</configuration>
Дополнительные сведения об отключении модулей с помощью параметров конфигурации вы найдете по ссылкам в разделе о дочерних элементах в документации, посвященной IIS <system.webServer>.
Удаление модуля
Если вы решите удалить модуль с помощью параметра в файле web.config, первым делом разблокируйте этот модуль и раздел <modules> в файле web.config:
Снятие блокировки модуля на уровне сервера. Выберите сервер IIS на боковой панели Подключения диспетчера IIS. Откройте элемент Модули в области IIS. Выберите нужный модуль из списка. На боковой панели Действия справа выберите Разблокировать. Если для модуля указано действие записи Блокировать, модуль уже разблокирован и ничего делать не нужно. Разблокируйте все модули, которые вы намерены удалить из файла web.config.
Разверните приложение без раздела
<modules>в web.config. Если вы развертываете приложение, для которого в файле web.config есть раздел<modules>, но этот раздел не был ранее разблокирован в диспетчере IIS, Configuration Manager создаст исключение при попытке разблокировать этот раздел. Поэтому приложение нужно развертывать без раздела<modules>.Разблокируйте раздел
<modules>в web.config. На боковой панели Подключения выберите веб-сайт в разделе Сайты. В области Управление откройте Редактор конфигураций. С помощью элементов навигации выберите разделsystem.webServer/modules. На боковой панели Действия справа выберите действие Разблокировать для этого раздела. Если для раздела модуля указано действие записи Блокировать раздел, раздел модуля уже разблокирован и ничего делать не нужно.Верните раздел
<modules>в файл web.config, указав в нем элемент<remove>для удаления модуля из приложения. Добавьте несколько элементов<remove>, чтобы удалить несколько модулей. При любых изменениях в файле web.config на сервере сразу же вносите такие же изменения в файл web.config для проекта на локальном компьютере. Такой способ удаления модуля никак не влияет на использование модуля в других приложениях на этом сервере.<configuration> <system.webServer> <modules> <remove name="MODULE_NAME" /> </modules> </system.webServer> </configuration>
Чтобы добавить или удалить модули для IIS Express с помощью файла web.config, измените файл applicationHost.config для разблокировки раздела <modules>.
Откройте файл {КОРЕНЬ ПРИЛОЖЕНИЯ}.vs\config\applicationhost.config.
Найдите элемент
<section>для модулей IIS и измените значение атрибутаoverrideModeDefaultсDenyнаAllow.<section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Allow" />Найдите раздел
<location path="" overrideMode="Allow"><system.webServer><modules>. Для модулей, которые требуется удалить, измените значениеlockItemсtrueнаfalse. В следующем примере показана разблокировка модуля CGI.<add name="CgiModule" lockItem="false" />После разблокировки раздела
<modules>и отдельных модулей вы можете добавлять или удалять модули IIS с помощью файла web.config приложения для запуска приложения в IIS Express.
Также модуль IIS можно удалить с помощью Appcmd.exe. Для этого включите в команду MODULE_NAME и APPLICATION_NAME:
Appcmd.exe delete module MODULE_NAME /app.name:APPLICATION_NAME
Например, так можно удалить DynamicCompressionModule с веб-сайта по умолчанию:
%windir%\system32\inetsrv\appcmd.exe delete module DynamicCompressionModule /app.name:"Default Web Site"
Минимальный набор модулей
Для запуска приложения ASP.NET Core нужны только два модуля: модуль анонимной аутентификации и модуль ASP.NET Core.
Модуль кэширования URI (UriCacheModule) позволяет IIS кэшировать конфигурацию веб-сайта на уровне URL-адресов. Без этого модуля IIS придется заново считывать и анализировать конфигурацию при каждом новом запросе, даже если один URL-адрес запрашивается несколько раз подряд. Синтаксический анализ конфигурации при каждом запросе значительно снижает производительность системы.
Поэтому мы настоятельно рекомендуем включать модуль кэширования URI во все развертывания ASP.NET Core, хотя он и не является строго обязательным для запуска размещенного приложения ASP.NET Core.
Модуль кэширования HTTP (HttpCacheModule) реализует кэш вывода служб IIS, а также логику кэширования элементов в кэше HTTP.sys. Без этого модуля содержимое не кэшируется в режиме ядра и все профили кэша игнорируются. Удаление модуля кэширования HTTP обычно крайне негативно влияет на производительность системы и потребление ресурсов.
Поэтому мы настоятельно рекомендуем включать модуль кэширования HTTP во все развертывания ASP.NET Core, хотя он и не является строго обязательным для запуска размещенного приложения ASP.NET Core.