Iis web config: Файл web.config | Microsoft Learn

Файл web.config | Microsoft Learn


  • Статья


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.

Создание, преобразование и публикация файла web.config обрабатываются целевым объектом MSBuild (_TransformWebConfig) при публикации проекта. Этот целевой объект присутствует в целевых веб-пакетах 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>

Значение false свойства InheritInChildApplications указывает, что параметры, заданные в элементе <location>, не наследуются приложениями, которые находятся во вложенном каталоге приложения.

Когда приложение развернуто в службе приложений Azure, путь stdoutLogFile задан как \\?\%home%\LogFiles\stdout. Путь сохраняет журналы stdout в папке LogFiles, расположение которой автоматически создается службой.

Сведения о конфигурации дочерних приложений IIS см. в разделе Расширенные конфигурации.

Атрибуты элемента

aspNetCore

attributeОписаниеЗначение по умолчанию
arguments

Необязательный строковый атрибут.

Аргументы для исполняемого файла, указанного в атрибуте processPath.

disableStartUpErrorPage

Дополнительный логический атрибут.

Если значение равно true, страница 502.5 — ошибка процесса подавляется и страница в файле web.config с кодом состояния 502 имеет более высокий приоритет.

false
forwardWindowsAuthToken

Дополнительный логический атрибут.

Если значение равно true, маркер безопасности отправляется дочернему процессу, прослушивающему порт %ASPNETCORE_PORT%, как заголовок MS-ASPNETCORE-WINAUTHTOKEN каждого запроса. Этот процесс вызывает CloseHandle по этому маркеру безопасности каждого запроса.

true
hostingModel

Необязательный строковый атрибут.

Указывает модель размещения — внутри процесса (InProcess/inprocess) или вне процесса (OutOfProcess/outofprocess).

OutOfProcess/outofprocess при отсутствии
processesPerApplication

Необязательный целочисленный атрибут.

Указывает число экземпляров процесса, заданное в параметре processPath, которое может появиться для каждого приложения.

†Для внутрипроцессного размещения установлено ограничение 1.

Параметр processesPerApplication не рекомендуется. Этот атрибут будет удален в будущем выпуске.

По умолчанию: 1
Минимум: 1
Максимальное значение: 100
processPath

Обязательный строковый атрибут.

Путь к исполняемому файлу, который запускает процесс прослушивания HTTP-запросов. Поддерживаются относительные пути. Если путь начинается с ., то начало пути считается относительно корневого каталога веб-сайта.

rapidFailsPerMinute

Необязательный целочисленный атрибут.

Указывает количество сбоев за минуту, которыми может завершиться процесс, указанный в processPath. Если этот предел превышен, модуль останавливает запуск процесса на оставшуюся часть минуты.

Не поддерживается для внутрипроцессного размещения.

По умолчанию: 10
Минимум: 0
Максимум: 100
requestTimeout

Необязательный атрибут timespan.

Указывает продолжительность, на протяжении которой модуль ASP.NET Core ожидает ответа от процесса, прослушивающего порт %ASPNETCORE_PORT%.

В версиях модуля ASP.NET Core, поставляемых с выпуском ASP.NET Core 2.1 или новее, атрибут requestTimeout указывается в часах, минутах и секундах.

Не применяется к внутрипроцессному размещению. Для внутрипроцессного размещения модуль ожидает, пока приложение не обработает запрос.

Допустимые значения для сегментов минут и секунд в строках находятся в диапазоне 0–59. Значение 60 для минут и секунд приведет к ошибке 500 — внутренняя ошибка сервера.

По умолчанию: 00:02:00
Минимум: 00:00:00
Максимум: 360:00:00
shutdownTimeLimit

Необязательный целочисленный атрибут.

Длительность ожидания модуля в секундах, пока произойдет правильное выключение исполняемого файла при обнаружении файла app_offline. htm.

По умолчанию: 10
Минимум: 0
Максимум: 600
startupTimeLimit

Необязательный целочисленный атрибут.

Время в секундах, которое модуль ожидает, пока запустится процесс прослушивания порта исполняемого файла. Если этот предел превышен, модуль завершает процесс.

Внутрипроцессное размещение. Процесс не перезапускается, и параметр rapidFailsPerMinuteне используется.

Размещение вне процесса. Модуль пытается перезапустить процесс при получении нового запроса и будет продолжать пытаться перезапустить процесс для последующих входящих запросов, если не удается запустить приложение определенное в атрибуте rapidFailsPerMinute количество раз за последнюю минуту.

Значение 0 (ноль) не считается бесконечным временем ожидания.

По умолчанию: 120
Минимум: 0
Максимум: 3600
stdoutLogEnabled

Дополнительный логический атрибут.

Если значение равно true, stdout и stderr для процесса, указанного в атрибуте processPath, перенаправляются к файлу, заданному в атрибуте stdoutLogFile.

false
stdoutLogFile

Необязательный строковый атрибут.

Указывает относительный или абсолютный путь к файлу, для которого регистрируются stdout и stderr из процесса, указанного в processPath. Относительные пути задаются относительно корневого каталога веб-сайта. Любой путь, начинающийся с ., относится к корневому каталогу веб-сайта, а все остальные пути рассматриваются как абсолютные пути. Все папки, указанные в пути, создаются модулем при создании файла журнала. С помощью разделителей подчеркивания метка времени, идентификатор процесса и расширение файла ( .log) добавляются к последнему сегменту пути журнала stdoutLogFile. Если в качестве значения задано значение . \logs\stdout, например, журнал stdout сохраняется как stdout_20180205194132_1934.log в папке logs с датой 5 февраля 2018 г. в 19:41:32 с идентификатором процесса 1934.

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

Разделы конфигурации приложений ASP.NET 4.x в файле web.config не используются для конфигурации приложений ASP.NET Core.

  • <system.web>
  • <appSettings>
  • <connectionStrings>
  • <location>

Для настройки приложений ASP.NET Core используются другие поставщики конфигураций. Дополнительные сведения см. в разделе Конфигурация.

Преобразование web.config

Если вам нужно преобразовать web.config при публикации, см. статью Преобразование web.config. Возможно, вам потребуется выполнить преобразование web.config при публикации, чтобы задать переменные среды на основе конфигурации, профиля или среды.

Дополнительные ресурсы

  • Службы IIS <system.webServer>
  • Модули IIS с ASP.NET Core
  • Преобразование web.config

Настройка веб-сервера из набора IIS, web.

config, заголовки HTTP: ilyachalov — LiveJournal

Я уже писал несколько постов про то, как начал пользоваться (и пользуюсь до сих пор) локальным веб-сервером (как я понимаю, он может быть не только локальным) из набора серверов «IIS»:

1. JavaScript: локальный веб-сервер из набора IIS
2. JavaScript: локальный веб-сервер и кэш браузера
3. JavaScript: локальный веб-сервер и favicon.ico

Напомню, «IIS» (расшифровывается как «Internet Information Services») — это набор серверов для нескольких служб Интернета от компании «Microsoft». Набор серверов «IIS» включен в состав операционной системы «Windows 10 Pro», которая установлена на моём компьютере. Поэтому, собственно, я и стал пользоваться веб-сервером из этого набора. (Актуальная версия «IIS» — 10.0) Тут подробнее:

https://ru.wikipedia.org/wiki/Internet_Information_Services
https://docs.microsoft.com/en-gb/iis (документация на английском)

В предыдущем посте я писал, как начал пользоваться инструментом разработчика «Issues» в браузере «Microsoft Edge» на движке «Chromium».

И этот самый инструмент «Issues» выдал мне по поводу моей тестовой HTML-страницы следующее предупреждение (по-английски «Warning»):

‘content-type’ header charset value should be ‘utf-8’

Вернее, он выдал мне три таких предупреждения — одно по поводу моей HTML-страницы index.html, а еще два — по поводу двух файлов, подключенных к моей HTML-странице — файла style.css с определениями стилей на языке CSS и файла myscript.js со скриптом на языке JavaScript.

О чем идет речь в предупреждении? Обратим внимание на слово «header» (по-русски «заголовок») в тексте предупреждения. Что это за заголовок? Как оказалось, речь тут идет про так называемые «заголовки HTTP»:

https://ru.wikipedia.org/wiki/Заголовки_HTTP
https://developer.mozilla.org/ru/docs/Web/HTTP/Headers

Казалось бы, для HTML-страницы заголовки HTTP можно настраивать с помощью HTML-элемента meta (об этом сказано на вышеуказанной странице википедии). Например, в данном случае на первый взгляд кажется, что нужно вставить в заголовочную часть HTML-страницы следующее:

<meta http-equiv="content-type" content="text/html; charset=utf-8">

Однако, это в моём браузере не работает (кодировку HTML-страницы указывает, но на заголовок HTTP, отсылаемый веб-сервером из набора «IIS», не влияет). Почему? Во-первых, значение "content-type" атрибута http-equiv HTML-элемента meta считается устаревшим (об этом сказано, например, тут), вместо этого для указания кодировки HTML-страницы рекомендуют использовать следующее:

<meta charset="utf-8">

У меня на тестовой HTML-странице уже указан этот короткий вариант, поэтому дополнительное указание HTML-элемента meta с атрибутом http-equiv="content-type" не требуется (будет считаться дублированием короткого варианта и об этом инструмент разработчика «Issues» браузера выдаст отдельное предупреждение).

Во-вторых (что более важно), как я понимаю (а я не специалист в этом вопросе, можно даже сказать, «чайник») веб-сервер из набора «IIS» вообще не учитывает, что там указано в коде HTML-страницы (возможно, веб-сервер можно как-то настроить, чтобы он учитывал HTML-элементы meta в коде отправляемой HTML-страницы, но я про такое не знаю).

Таким образом, очевидно, что для исправления вышеуказанного предупреждения от инструмента разработчика «Issues» браузера требуется настройка соответствующего заголовка HTTP, формируемого веб-сервером при отправке HTML-страницы (а также при отправке файлов, подключенных к этой HTML-странице).

* * *

Вообще, диалог между веб-сервером и браузером может служить удачной и достаточно простой иллюстрацией работы компьютерных сетей с архитектурой «клиент-сервер». В этом случае веб-сервер, соответственно, выполняет роль «сервера», а браузер выполняет роль «клиента». Оба конца этого диалога (сервер и клиент) являются компьютерными программами. Хотя часто сервером еще называют компьютер, на котором установлена программа (или несколько программ), выполняющая роль «сервера». Это создает некоторую путаницу в головах людей, изучающих компьютерные сети. Подробнее:

https://ru.wikipedia.org/wiki/Клиент_—_сервер

Если интересна эта тема, то, чтобы получить начальное представление о работе компьютерных сетей, я рекомендую прочесть первую главу знаменитой книги Эндрю Таненбаума, про которую у меня есть отдельный пост.

В рассматриваемом здесь случае веб-сервер из набора «IIS» и мой браузер (клиент) находятся на одном и том же моём компьютере, поэтому я здесь часто называю веб-сервер локальным веб-сервером. Это удобно для изучения, потому что оба участника сетевого диалога находятся под моим контролем, доступны для управления и экспериментов.

* * *

Итак, как произвести нужную мне настройку веб-сервера из набора «IIS»? Это можно сделать минимум двумя способами: 1) внести исправления напрямую в файл, в котором хранятся настройки веб-сервера; 2) открыть графический интерфейс веб-сервера и внести изменения в настройки веб-сервера через него, в результате чего эти настройки попадут в тот же файл, что при первом способе. Как я понимаю, результат при использовании любого из этих способов будет одинаковый.

Файлы настроек веб-сервера (как я понял) бывают разными: есть файлы настроек, которые действуют на все файлы, выдаваемые веб-сервером, а есть файлы настроек, которые действуют только на часть файлов, выдаваемых веб-сервером (например, только на файлы одного веб-сайта или на файлы, находящиеся в одном каталоге). Здесь я рассмотрю только последний случай, а именно я рассмотрю файл настроек веб-сервера, который называется web.config. Этот файл настроек действует только на файлы каталога, в котором он находится, в том числе на файлы, находящиеся во вложенных в текущий каталогах. Подробнее:

https://docs.microsoft.com/en-us/iis/manage/managing-your-configuration-settings/delegating-configuration-to-webconfig-files

Что из себя представляет этот файл? Это текстовый файл, в котором с помощью разметки на языке XML описаны настройки веб-сервера. Правила написания этой разметки можно узнать в соответствующем справочнике:

https://docs. microsoft.com/en-us/iis/configuration/

Файлы моего локального веб-сайта находятся в следующем каталоге (я про это рассказывал в отдельном посте):

C:\inetpub\wwwroot\

В этом каталоге изначально нет файла web.config, что значит, что на файлы в этом каталоге распространяются общие настройки веб-сервера.

Я поместил в этот каталог файл web.config со следующим содержанием:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <staticContent>
            <mimeMap fileExtension=".html" mimeType="text/html; charset=utf-8" />
            <mimeMap fileExtension=".css" mimeType="text/css; charset=utf-8" />
            <mimeMap fileExtension=".js" mimeType="application/javascript; charset=utf-8" />
        </staticContent>
    </system.webServer>
</configuration>

Затем открыл в своём браузере адрес, который соответствует указанному выше каталогу:

http://localhost/index. html

и неожиданно получил сообщение об ошибке «HTTP 500.19 — Internal Server Error».

Почему произошла эта ошибка? Дело в том, что в настройках веб-сервера уже есть определения для трех указанных типов файлов (с расширениями .html, .css, .js), а мой файл настроек web.config пытается добавить определения для этих же расширений файлов. Правила описания настроек веб-сервера запрещают определения mimeMap с одинаковыми атрибутами fileExtension.

Я этого не знал, поэтому решил попытаться внести нужные мне настройки через графический интерфейс веб-сервера из набора «IIS». Как открыть этот графический интерфейс? Как обычно, в операционной системе «Windows 10 Pro» это можно сделать кучей способов. Я открываю поиск (либо кликнув по иконке с увеличительным стеклом справа от кнопки «Пуск», либо нажав комбинацию клавиш Win+S) и набираю там «Диспетчер служб IIS», а затем открываю этот самый диспетчер.

В открывшемся окне «Диспетчера служб IIS» слева будет часть окна, озаглавленная «Подключения», и в ней будет отображено дерево подключений. В корне этого дерева у меня находится название моего компьютера. Если корень «развернуть», то там у меня открывается два пункта: «Пулы приложений» и «сайты». Я «развернул» пункт «сайты» и в нем оказался единственный сайт с названием «Default Web Site» (этот сайт, как я понимаю, был создан при включении набора «IIS», которое я описывал в отдельном посте). Это и есть сайт, который соответствует каталогу C:\inetpub\wwwroot\ (по умолчанию).

Я выбрал этот сайт, кликнув на него мышкой. После этого в центральной части окна и в правой части окна доступны возможные действия и настройки.

В центральной части окна диспетчера я кликнул мышкой на пункт «Типы MIME». Центральная часть окна диспетчера сменилась на окно выбранной функции. Но возникла ошибка из-за ошибки в написанном мной (см. выше) файле web.config. Я удалил этот файл и снова открыл пункт «Типы MIME». Теперь в центральной части окна диспетчера (теперь уже без ошибки) открылся большой список разнообразных расширений файлов.

Я нашел в этом списке три нужных мне расширения (.html, .css, .js) и добавил к определению каждого из этих расширений в графе «Тип MIME» текст ; charset=utf-8.

После этого я заглянул в каталог моего сайта C:\inetpub\wwwroot\ и увидел, что там появился файл web.config, по-видимому, созданный диспетчером служб «IIS» в ответ на мои вышеописанные действия. Вот содержимое этого файла (я пометил красным цветом отличия от файла, написанного мной ранее):

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <staticContent>
            <remove fileExtension=".js" />
            <remove fileExtension=".css" />
            <remove fileExtension=".html" />
            <mimeMap fileExtension=".html" mimeType="text/html; charset=utf-8" />
            <mimeMap fileExtension=". css" mimeType="text/css; charset=utf-8" />
            <mimeMap fileExtension=".js" mimeType="application/javascript; charset=utf-8" />
        </staticContent>
    </system.webServer>
</configuration>

То есть, если в списке расширений файлов, обрабатываемых веб-сервером, уже есть расширения, настройку обработки которых нужно изменить, то сначала удаляем «старые» определения, а затем добавляем «новые». Таким образом избегаем появления в списке расширений файлов дубликатов.

После этого я снова открыл в браузере адрес http://localhost/index.html и теперь HTML-страница загрузилась без ошибок сервера.

Обсуждаемое предупреждение инструмента разработчика «Issues» исчезло.

Кстати, полученные браузером от веб-сервера заголовки HTTP можно просмотреть в инструменте разработчика «Network», кликнув мышкой на название конкретного полученного от веб-сервера файла в списке полученных файлов. Я там посмотрел и увидел, что в полученных от веб-сервера заголовках HTTP присутствуют изменения, которые я настроил вышеописанным файлом web. config.

В принципе, мой локальный сайт работал корректно и без этих настроек. Поэтому не уверен, что я оставлю эти настройки. Впрочем, я всегда могу их легко откатить, удалив вышеописанный файл web.config из каталога своего веб-сайта. Необходимость этих настроек описана по следующей ссылке:

https://webhint.io/docs/user-guide/hints/hint-content-type/

файл web.config | Microsoft Learn

  • Статья

web.config — это файл, который считывается IIS и основным модулем ASP.NET для настройки приложения, размещенного в IIS.

web.config расположение файла

Чтобы правильно настроить основной модуль ASP.NET, файл 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 и для настройки модуля ASP.NET Core и перемещается в опубликованные выходные данные.

Если в проекте присутствует файл web.config , файл преобразуется с правильным processPath и аргументами для настройки основного модуля ASP.NET и перемещается в опубликованные выходные данные. Преобразование не изменяет параметры конфигурации IIS в файле.

Файл web.config может содержать дополнительные параметры конфигурации IIS, управляющие активными модулями IIS. Сведения о модулях IIS, способных обрабатывать запросы с приложениями ASP.NET Core, см. в разделе о модулях IIS.

Создание, преобразование и публикация файла web.config обрабатывается целью MSBuild ( _TransformWebConfig ) при публикации проекта. Эта цель присутствует в целях Web SDK ( Microsoft.NET.Sdk.Web ). SDK устанавливается в верхней части файла проекта:

 
 

Чтобы предотвратить преобразование Web SDK файла web.config , используйте свойство в файле проекта:

 
  true

 

При отключении Web SDK от преобразования файла processPath и аргументы должны быть установлены вручную разработчиком. Дополнительные сведения см. в разделе Основной модуль ASP.NET (ANCM) для IIS.

Конфигурация основного модуля ASP.NET с

web.config

Основной модуль ASP.NET настраивается с помощью раздела aspNetCore узла system.webServer в файле web.config сайта.

Следующий файл web.config публикуется для зависимого от платформы развертывания и настраивает основной модуль ASP. NET для обработки запросов сайта:

 
<конфигурация>
  <местоположение = "." inheritInChildApplications="false">
    <системный.веб-сервер>
      <обработчики>
        
      
      
    
  

 

Для автономного развертывания опубликован следующий файл web.config :

 
<конфигурация>
  <местоположение = "." inheritInChildApplications="false">
    <системный.веб-сервер>
      <обработчики>
        
      
       \MyApp.exe"
                  stdoutLogEnabled = "ложь"
                  stdoutLogFile=".\журналы\stdout"
                  hostingModel="в процессе" />
    
  

 

Для свойства InheritInChildApplications задано значение false , чтобы указать, что параметры, указанные в элементе , не наследуются приложениями, которые находятся в подкаталоге приложения.

Когда приложение развертывается в службе приложений Azure, для пути stdoutLogFile задается значение \\?\%home%\LogFiles\stdout . Путь сохраняет журналы стандартного вывода в папку LogFiles , которая автоматически создается службой.

Сведения о настройке подприложения IIS см. в разделе Расширенная настройка.

Атрибуты элемента

aspNetCore

Атрибут Описание По умолчанию
аргументы

Необязательный строковый атрибут.

Аргументы для исполняемого файла, указанного в processPath .

отключитьStartUpErrorPage

Необязательный логический атрибут.

Если true, страница 502.5 — Ошибка процесса подавляется, а кодовая страница состояния 502, настроенная в web.config , имеет приоритет.

ложный
впередWindowsAuthToken

Необязательный логический атрибут.

Если значение равно true, токен пересылается дочернему процессу, прослушивающему %ASPNETCORE_PORT% , в качестве заголовка «MS-ASPNETCORE-WINAUTHTOKEN» для каждого запроса. Этот процесс отвечает за вызов CloseHandle для этого токена для каждого запроса.

правда
хостингМодель

Необязательный строковый атрибут.

Определяет модель размещения как внутрипроцессную ( InProcess / inprocess ) или внепроцессную ( OutOfProcess / outofprocess ).

OutOfProcess / outofprocess если нет
процессов на приложение

Необязательный целочисленный атрибут.

Указывает количество экземпляров процесса, указанного в параметре processPath , которые могут быть развернуты для каждого приложения.

†Для внутрипроцессного хостинга значение ограничено 1 .

Установка процессовPerApplication не рекомендуется. Этот атрибут будет удален в будущем выпуске.

По умолчанию: 1
Мин.: 1
Макс.: 100
путь процесса

Обязательный строковый атрибут.

Путь к исполняемому файлу, запускающему процесс, прослушивающий HTTP-запросы. Относительные пути поддерживаются. Если путь начинается с . путь считается относительным к корню сайта.

RapidFailsPerMinute

Необязательный целочисленный атрибут.

Указывает, сколько раз в минуту процесс, указанный в processPath , может аварийно завершать работу. При превышении этого лимита модуль прекращает запуск процесса до конца минуты.

Не поддерживается внутрипроцессным размещением.

По умолчанию: 10
Мин.: 0
Макс.: 100
время ожидания запроса

Необязательный атрибут временного интервала.

Задает время, в течение которого основной модуль ASP.NET ожидает ответа от процесса, прослушивающего %ASPNETCORE_PORT%.

В версиях модуля ASP.NET Core, поставляемых с выпуском ASP.NET Core 2.1 или более поздней версии, requestTimeout указывается в часах, минутах и ​​секундах.

Не применяется к внутрипроцессному хостингу. Для внутрипроцессного хостинга модуль ожидает, пока приложение обработает запрос.

Допустимые значения минут и секунд сегментов строки находятся в диапазоне 0-59. Использование 60 в значении минут или секунд приводит к ошибке 500 — Internal Server Error .

По умолчанию: 00:02:00
Мин.: 00:00:00
Макс.: 360:00:00
выключениеTimeLimit

Необязательный целочисленный атрибут.

Продолжительность в секундах, в течение которой модуль ожидает корректного завершения работы исполняемого файла при обнаружении файла app_offline.htm .

По умолчанию: 10
Мин.: 0
Макс.: 600
StartupTimeLimit

Необязательный целочисленный атрибут.

Продолжительность в секундах, в течение которой модуль ожидает запуска исполняемым файлом процесса прослушивания порта. Если это время превышено, модуль убивает процесс.

При размещении в процессе : процесс , а не перезапущен, и использует ли , а не настройку rapidFailsPerMinute .

При размещении вне процесса : модуль пытается перезапустить процесс при получении нового запроса и продолжает попытки перезапустить процесс при последующих входящих запросах, если приложение не запускается rapidFailsPerMinute количество раз за последнюю скользящую минуту.

Значение 0 (ноль) означает, что , а не , считается бесконечным временем ожидания.

По умолчанию: 120
Мин.: 0
Макс.: 3600
stdoutLogEnabled

Необязательный логический атрибут.

Если true, stdout и stderr для процесса, указанного в processPath , перенаправляются в файл, указанный в stdoutLogFile .

ложный
stdoutLogFile

Необязательный строковый атрибут.

Указывает относительный или абсолютный путь к файлу, для которого регистрируются stdout и stderr из процесса, указанного в processPath . Относительные пути относятся к корню сайта. Любой путь, начинающийся с . относятся к корню сайта, а все остальные пути рассматриваются как абсолютные пути. Любые папки, указанные в пути, создаются модулем при создании файла журнала. Используя разделители подчеркивания, метку времени, идентификатор процесса и расширение файла ( .log ) добавляются в последний сегмент пути stdoutLogFile . Если в качестве значения указано .\logs\stdout , пример журнала stdout сохраняется как stdout_20180205194132_1934.log в папке logs при сохранении 5 февраля 2018 г. в 19:41:32 с идентификатором процесса 1934.

aspnetcore-stdout

Установить переменные среды

Переменные среды можно указать для процесса в атрибут processPath . Укажите переменную среды с дочерним элементом элемента коллекции . Переменные среды, установленные в этом разделе, имеют приоритет над системными переменными среды.

В следующем примере две переменные среды задаются в web.config . ASPNETCORE_ENVIRONMENT настраивает среду приложения на Development . Разработчик может временно установить это значение в файл web.config , чтобы заставить страницу исключений разработчика загружаться при отладке исключения приложения. CONFIG_DIR — это пример определяемой пользователем переменной среды, где разработчик написал код, который считывает значение при запуске, чтобы сформировать путь для загрузки файла конфигурации приложения.

 
  <переменные среды>
    
    
  

 

Примечание

Альтернативой настройке среды непосредственно в web. config является включение свойства в профиль публикации ( .pubxml ) или файл проекта. Этот подход устанавливает среду в web.config при публикации проекта:

 
  Разработка

 

Предупреждение

Установите только ASPNETCORE_ENVIRONMENT переменная среды для Development на промежуточных и тестовых серверах, недоступных для ненадежных сетей, таких как Интернет.

Конфигурация IIS с

web.config

На конфигурацию IIS влияет раздел файла web.config для сценариев IIS, которые работают для приложений ASP.NET Core с ASP.NET Основной модуль. Например, конфигурация IIS поддерживает динамическое сжатие. Если IIS настроен на уровне сервера для использования динамического сжатия, Элемент в файле web. config приложения может отключить его для приложения ASP.NET Core.

Дополнительные сведения см. в следующих разделах:

  • Справочник по конфигурации для
  • Базовый модуль ASP.NET (ANCM) для IIS
  • модулей IIS с ASP.NET Core

Чтобы установить переменные среды для отдельных приложений, работающих в изолированных пулах приложений (поддерживается для IIS 10.0 или более поздней версии), см. AppCmd.exe команда раздела Переменные среды в справочной документации IIS.

Разделы конфигурации

web.config

Разделы конфигурации приложений ASP.NET 4.x в web.config не используются приложениями ASP.NET Core для настройки:

  • <Настройки приложения>
  • <местоположение>

Приложения ASP. NET Core настраиваются с помощью других поставщиков конфигурации. Дополнительные сведения см. в разделе Конфигурация.

Преобразование web.config

Если вам нужно преобразовать web.config при публикации, см. раздел Преобразование web.config. Вам может потребоваться преобразовать web.config при публикации, чтобы установить переменные среды на основе конфигурации, профиля или среды.

Дополнительные ресурсы

  • IIS <системный.веб-сервер>
  • модулей IIS с ASP.NET Core
  • Преобразование web.config

| Microsoft Узнайте

Редактировать

Твиттер

LinkedIn

Фейсбук

Электронная почта

  • Статья

Обзор

Элемент webServer> указывает корневой элемент для многих параметров конфигурации уровня сайта и уровня приложения для служб IIS 7 в файле ApplicationHost.config и содержит элементы конфигурации. которые определяют параметры, используемые механизмом и модулями веб-сервера.

Примечание

В отличие от настроек, находящихся в < system.applicationHost >, настройки в элементе можно делегировать.

Совместимость

Версия Примечания
ИИС 10.0 Элемент не был изменен в IIS 10.0.
ИИС 8.5 9Элемент 0014 не был изменен в IIS 8.5.
ИИС 8.0 Элементы и были добавлены как дочерние элементы.
ИИС 7.5 Элемент webServer> не был изменен в IIS 7.5.
ИИС 7.0 Элемент появился в IIS 7.0.
ИИС 6.0 н/д

Настройка

Элемент включен в установку IIS 7 по умолчанию. элемент 0014. Примеры настройки параметров, находящихся в элементе , см. в дочерних элементах, перечисленных в разделе сведений о конфигурации этого раздела.

Конфигурация

Элемент определен в файле ApplicationHost.config, хотя настройки в элементе можно делегировать в файлы Web.config.

Атрибуты

Нет.

Дочерние элементы

Элемент Описание
Инициализация приложения Дополнительный элемент.

Настраивает параметры для инициализации приложения, которая выполняется упреждающе до получения запроса.

аспид Дополнительный элемент.

Настраивает параметры для приложений Active Server Pages (ASP).

кэширование Дополнительный элемент.

Конфигурирует параметры выходного кэша.

ЦГИ Дополнительный элемент.

Настраивает параметры по умолчанию для приложений Common Gateway Interface (CGI).

по умолчаниюДокумент Дополнительный элемент.

Настраивает параметры для возврата документа по умолчанию в браузер клиента, когда клиент не указывает имя файла в запросе.

каталогОбзор Дополнительный элемент.

Настраивает, включен или отключен просмотр каталогов на веб-сервере, и указывает информацию, которая должна включаться в список каталогов.

fastCgi Дополнительный элемент.

Содержит набор определений пула приложений fastCgi.

глобальные модули Дополнительный элемент.

Указывает параметры конфигурации для глобальных модулей на веб-сервере.

манипуляторы Дополнительный элемент.

Указывает обработчики для обработки запросов к сайтам и приложениям.

httpСжатие Дополнительный элемент.

Настраивает параметры сжатия HTTP для веб-сервера.

httpОшибки Дополнительный элемент.

Настраивает сообщения об ошибках HTTP для веб-сервера.

httpLogging Дополнительный элемент.

Указывает параметры конфигурации для ведения журнала HTTP.sys.

httpпротокол Дополнительный элемент.

Настраивает настраиваемые заголовки ответов и заголовки перенаправления для отправки с сервера клиенту.

HTTPRedirect Дополнительный элемент.

Настраивает параметры для перенаправления клиентских запросов в новое место.

httpTracing Дополнительный элемент.

Указывает параметры конфигурации для трассировки HTTP.sys.

isapiFilters Дополнительный элемент.

Указывает параметры конфигурации для фильтров ISAPI на веб-сервере.

управление Дополнительный элемент.

Настраивает веб-сервер для удаленного управления с помощью диспетчера IIS.

модули Дополнительный элемент.

Указывает параметры конфигурации для модулей на веб-сервере.

одбклоггинг Дополнительный элемент.

Настраивает ведение журнала Open Database Connectivity (ODBC).

безопасность Дополнительный элемент.

Указывает группу разделов, содержащую разделы, связанные с безопасностью.

время выполнения сервера Дополнительный элемент.

Настраивает ограничения запросов для приложений на веб-сервере.

serverSideInclude Дополнительный элемент.

Указывает, отключены ли директивы #exec на стороне сервера (SSI).

статическое содержимое Дополнительный элемент.

Настраивает параметры обработчика запросов к статическим файлам.

отслеживание Дополнительный элемент.

Настраивает параметры трассировки запросов.

urlCompression Дополнительный элемент.

Настраивает сжатие статического и динамического содержимого.

проверка Дополнительный элемент.

Настраивает IIS 7 для определения необходимости какой-либо миграции для приложения ASP. NET, настроенного для работы в режиме ISAPI, для правильной работы в интегрированном режиме.

вебдав Дополнительный элемент.

Настраивает параметры публикации WebDAV.

веб-сокет Дополнительный элемент.

Настраивает связь по протоколу WebSocket.

Пример конфигурации

В следующем образце конфигурации определяется простой элемент , содержащий только статическое содержимое.

 <системный.веб-сервер>
<асп />
<кэширование включено="true" enableKernelCache="true" />


<файлы>
<добавить значение="Default.htm" />
<добавить значение="Index.htm" />
<добавить значение="Index.html" />




<глобальные модули>
dll" />











dll" />



<имя_схемы="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
<статическиетипы>
<добавить mimeType="text/*" enabled="true" />
<добавить mimeType="message/*" enabled="true" />
<добавить mimeType="application/javascript" enabled="true" />
<добавить mimeType="*/*" enabled="false" />







htm" />










<одбклоггинг />
<безопасность>

<зависимости приложения/>
<аутентификация>

<базовая аутентификация />

<дайджестаутентикатион />

<Аутентификация окон />

<авторизация />


<очистить/>

<фильтрация запросов>



<добавить сегмент="Web.