Модули IIS с ASP.NET Core
Примечание.
Это не последняя версия этой статьи. В текущем выпуске см . версию .NET 9 этой статьи.
Предупреждение
Эта версия ASP.NET Core больше не поддерживается. Дополнительные сведения см. в статье о политике поддержки .NET и .NET Core. В текущем выпуске см . версию .NET 8 этой статьи.
Внимание
Эта информация относится к предварительному выпуску продукта, который может быть существенно изменен до его коммерческого выпуска. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
В текущем выпуске см . версию .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.
Дополнительные ресурсы
ASP.NET Core