Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Файл
Примечание.
Это не последняя версия этой статьи. В текущей версии см. версию .NET 10 этой статьи.
Предупреждение
Эта версия ASP.NET Core больше не поддерживается. Дополнительные сведения см. в политике поддержки .NET и .NET Core. В текущей версии см. версию .NET 10 этой статьи.
web.config — это файл, считываемый службами IIS и модулем ASP.NET Core для настройки приложения, размещенного с помощью IIS.
Расположение файла web.config
Для корректной настройки модуля ASP.NET Core необходимо наличие файла web.config в корневой папке содержимого развертываемого приложения (как правило, это основной путь приложения). Это то же самое расположение, что и физический путь веб-сайта, указанный для IIS. Файл web.config требуется в корне приложения, чтобы включить публикацию нескольких приложений с помощью веб-развертывания.
По физическому пути приложения находятся файлы с конфиденциальной информацией, например, {ASSEMBLY}.runtimeconfig.json, {ASSEMBLY}.xml (комментарии к XML-документации) и {ASSEMBLY}.deps.json, где заполнитель {ASSEMBLY} представляет собой имя сборки. Когда файл web.config присутствует и сайт запускается нормально, службы IIS не обслуживают эти конфиденциальные файлы, если они запрашиваются.
web.config Если файл отсутствует, неправильно назван или не удается настроить сайт для нормального запуска, службы IIS могут предоставлять конфиденциальные файлы общедоступным образом.
Файл web.config должен постоянно присутствовать в развертывании, а также иметь правильное имя и возможность настроить сайт для нормального запуска. Никогда не удаляйте файл web.config из развертывания в рабочей среде.
Если в проекте нет файла web.config, он создается с правильными processPath и arguments для настройки модуля ASP.NET Core и переносится в опубликованные выходные данные.
web.config Если файл присутствует в проекте, он преобразуется с правильными processPath и arguments для настройки ASP.NET Core модуля и перемещается в опубликованные выходные данные. Преобразование не изменяет параметры конфигурации служб IIS, включенные в файл.
Файл web.config может предоставить дополнительные параметры конфигурации IIS, которые управляют активными модулями IIS. Сведения о модулях IIS, способных обрабатывать запросы с помощью приложений ASP.NET Core, см. в статье IIS.
Целевой объект_TransformWebConfig MSBuild обрабатывает создание, преобразование и публикацию web.config файла при публикации проекта. Этот целевой объект присутствует в целевых веб-пакетах SDK (Microsoft.NET.Sdk.Web). Пакет SDK задается в начале файла проекта:
<Project Sdk="Microsoft.NET.Sdk.Web">
Чтобы веб-пакет SDK не преобразовывал файл web.config, используйте свойство <IsTransformWebConfigDisabled> в файле проекта:
<PropertyGroup>
<IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
</PropertyGroup>
При отключении веб-пакета SDK от преобразования файла разработчик должен вручную задать processPath и arguments. Дополнительные сведения см. в разделе Модуль ASP.NET Core для IIS.
Настройка модуля ASP.NET Core с помощью web.config
Модуль ASP.NET Core настроен с разделом aspNetCore узла system.webServer в файле web.config сайта.
Следующий файл web.config публикуется для зависимого от платформы развертывания и настраивает модуль ASP.NET Core для обработки запросов к сайту.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet"
arguments=".\MyApp.dll"
stdoutLogEnabled="false"
stdoutLogFile=".\logs\stdout"
hostingModel="inprocess" />
</system.webServer>
</location>
</configuration>
Следующий файл web.config опубликован для автономного развертывания.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\MyApp.exe"
stdoutLogEnabled="false"
stdoutLogFile=".\logs\stdout"
hostingModel="inprocess" />
</system.webServer>
</location>
</configuration>
Значение свойства InheritInChildApplications устанавливается в false, чтобы указать, что параметры, заданные в элементе <location>, не наследуются приложениями, которые находятся во вложенном каталоге приложения.
Когда приложение развернуто в службе приложений Azure, путь stdoutLogFile задан как \\?\%home%\LogFiles\stdout. Путь сохраняет журналы stdout в LogFiles папку, которая является автоматически созданным службой расположением.
Сведения о конфигурации дочерних приложений IIS см. в разделе Расширенные конфигурации.
Атрибуты элемента aspNetCore
| Атрибут | Описание | По умолчанию |
|---|---|---|
arguments |
Необязательный строковый атрибут. Аргументы исполняемого файла, указанного в |
|
disableStartUpErrorPage |
Дополнительный логический атрибут. Если значение равно true, страница 502.5 — ошибка процесса подавляется, и страница с кодом состояния 502, настроенная в |
false |
forwardWindowsAuthToken |
Дополнительный логический атрибут. Если значение равно true, токен пересылается дочернему процессу, прослушивающему на |
true |
hostingModel |
Необязательный строковый атрибут. Указывает модель размещения — внутри процесса ( |
OutOfProcess
/
outofprocess при отсутствии |
processesPerApplication |
Необязательный целочисленный атрибут. Указывает количество экземпляров процесса, указанного в параметре †Для внутрипроцессного размещения значение ограничено Параметр |
По умолчанию: 1Минимум: 1Максимальное значение: 100† |
processPath |
Обязательный строковый атрибут. Путь к исполняемому файлу, который запускает процесс прослушивания HTTP-запросов. Поддерживаются относительные пути. Если путь начинается с |
|
rapidFailsPerMinute |
Необязательный целочисленный атрибут. Указывает количество раз, когда указанный в Не поддерживается для внутрипроцессного размещения. |
По умолчанию: 10Минимум: 0Максимум: 100 |
requestTimeout |
Необязательный атрибут временного интервала. Указывает продолжительность, на протяжении которой модуль ASP.NET Core ожидает ответа от процесса, прослушивающего порт %ASPNETCORE_PORT%. В версиях модуля ASP.NET Core, поставляемых с выпуском ASP.NET Core 2.1 или новее, атрибут Не применяется к внутрипроцессному размещению. Для внутрипроцессного размещения модуль ожидает, пока приложение не обработает запрос. Допустимые значения для сегментов минут и секунд в строках находятся в диапазоне 0–59. Использование значения |
По умолчанию: 00:02:00Минимум: 00:00:00Максимум: 360:00:00 |
shutdownTimeLimit |
Необязательный целочисленный атрибут. Длительность, в течение которой модуль в секундах ожидает корректного завершения работы исполняемого файла при обнаружении файла |
По умолчанию: 10Минимум: 0Максимум: 600 |
startupTimeLimit |
Необязательный целочисленный атрибут. Время в секундах, которое модуль ожидает, пока запустится процесс прослушивания порта исполняемого файла. Если этот предел превышен, модуль завершает процесс. Когда выполняется внутрипроцессное размещение: процесс не перезапускается и не использует параметр
Внепроцессное размещение. Модуль пытается перезапустить процесс, когда он получает новый запрос, и продолжает попытки перезапустить процесс при последующих входящих запросах, если только приложению не удастся запустится определенное количество раз ( Значение 0 (ноль) не считается бесконечным временем ожидания. |
По умолчанию: 120Минимум: 0Максимум: 3600 |
stdoutLogEnabled |
Дополнительный логический атрибут. Если значение истинно, |
false |
stdoutLogFile |
Необязательный строковый атрибут. Указывает относительный или абсолютный путь к файлу (для которого |
aspnetcore-stdout |
Настройка переменных среды
Переменные среды для процесса можно указать в атрибуте processPath. Укажите переменную среды с дочерним элементом <environmentVariable> элемента коллекции <environmentVariables>. Переменные среды, установленные в этом разделе, имеют приоритет над переменными системной среды.
В приведенном ниже примере устанавливаются две переменные среды в web.config.
ASPNETCORE_ENVIRONMENT настраивает среду приложения в Development. Разработчик может временно задать это значение в web.config файле, чтобы принудительно загрузить страницу исключений разработчика при отладке исключения приложения.
CONFIG_DIR — пример пользовательской переменной среды, где разработчик написал код, который считывает значение при запуске, чтобы сформировать путь для загрузки файла конфигурации приложения.
<aspNetCore processPath="dotnet"
arguments=".\MyApp.dll"
stdoutLogEnabled="false"
stdoutLogFile=".\logs\stdout"
hostingModel="inprocess">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
<environmentVariable name="CONFIG_DIR" value="f:\application_config" />
</environmentVariables>
</aspNetCore>
Примечание.
Вместо установки среды напрямую в web.config можно включить свойство <EnvironmentName> в профиль публикации (.pubxml) или файл проекта. Этот подход задает среду web.config при публикации проекта.
<PropertyGroup>
<EnvironmentName>Development</EnvironmentName>
</PropertyGroup>
Предупреждение
Устанавливайте переменную среды ASPNETCORE_ENVIRONMENT для Development только на серверах предварительного и тестового окружения, которые не имеют доступа к ненадежным сетям, таким как Интернет.
Настройка служб IIS с помощью web.config
Конфигурация IIS зависит от <system.webServer> раздела web.config сценариев IIS, которые работают для приложений ASP.NET Core с помощью модуля ASP.NET Core. Например, конфигурация IIS работает для динамического сжатия. Если IIS настроен на уровне сервера для использования динамического сжатия, элемент <urlCompression> в файле web.config приложения может отключить его для приложения ASP.NET Core.
Дополнительные сведения см. в следующих статьях:
-
Справочник по настройке для
<system.webServer> - модуль ASP.NET Core (ANCM) для IIS
- Модули IIS с ASP.NET Core
Сведения о настройке переменных среды для отдельных приложений, работающих в изолированных пулах приложений (поддерживается для IIS 10.0 или более поздней версии), смAppCmd.exe. в разделе команды статьи "Переменные <environmentVariables>среды" в справочной документации по IIS.
Разделы конфигурации web.config
Разделы конфигурации приложений web.config ASP.NET 4.x не используются приложениями ASP.NET Core для настройки:
<system.web><appSettings><connectionStrings><location>
Для настройки приложений ASP.NET Core используются другие поставщики конфигураций. Дополнительные сведения см. в статье Конфигурация.
Преобразуйте web.config
Если вам нужно преобразовать web.config при публикации, см. статью Преобразование web.config. Возможно, вам потребуется выполнить преобразование web.config при публикации, чтобы задать переменные среды на основе конфигурации, профиля или среды.
Дополнительные ресурсы
ASP.NET Core