Web config где находится visual studio
Иерархия конфигурации
Когда конфигурационные элементы определяются в файле Web.config, они всегда переопределяют значения, указанные в файлах, которые находятся выше в иерархии. В таблице ниже перечислены конфигурационные файлы и их позиция в рамках иерархии.
В данном файле определены разделы конфигурации и стандартные значения для IIS или IIS Express. Это второй уровень иерархии, который применяется для определения разделов, специфичных для сервера приложений, таких как system.webServer. (Местоположение этого файла указано ниже.)
Это файл Web.config в корневой папке приложения. Данный файл чаще всего используется разработчиками для целей конфигурирования, и он переопределяет значения, указанные в файле Web.config уровня сайта
Элемент location в файле Web.config уровня приложения позволяет устанавливать конфигурационные параметры для папки внутри приложения, указанной в атрибуте path
Это файл Web.config, добавляемый в папку внутри приложения. Он дает такой же эффект, как и атрибут location в файле Web.config уровня приложения
Этот процесс продолжается по иерархии вплоть до достижения файла Web.config уровня приложения, а встречающиеся элементы применяются для расширения объединенной конфигурации или замены существующих значений параметров. Наконец, обрабатываются элементы location и файлы Web.config уровня папок, в результате чего создаются конфигурации, специфичные для частей приложения.
В конечном итоге получается согласованное представление конфигурации приложения с дополнениями, которые применяются к отдельным папкам. Чтобы упростить понимание способа объединения иерархии, мы проиллюстрировали отношения между различными файлами на рисунке ниже:
Причина, по которой большинство разработчиков имеют дело с файлом Web.config уровня приложения, связана с недоступностью файлов из более высоких уровней иерархии, что почти всегда характерно для платформ хостинга и облачных платформ, а также часто происходит в случае применения серверов IIS в закрытых дата-центрах.
Во время разработки иногда необходимо изменять глобальные конфигурационные файлы для воссоздания параметров, с которыми придется работать в производственной среде. Причина в том, что не все конфигурационные параметры могут быть определены в файле Web.config уровня приложения. Файл Machine,.config и глобальный файл Web.config расположены в следующей папке:
web.config file location
The web.config file must be present in the deployment at all times, correctly named, and able to configure the site for normal start up. Never remove the web.config file from a production deployment.
To prevent the Web SDK from transforming the web.config file, use the property in the project file:
The following web.config is published for a self-contained deployment:
When an app is deployed to Azure App Service, the stdoutLogFile path is set to \\?\%home%\LogFiles\stdout . The path saves stdout logs to the LogFiles folder, which is a location automatically created by the service.
For information on IIS sub-application configuration, see Advanced configuration.
Attributes of the aspNetCore element
Optional string attribute.
Arguments to the executable specified in processPath .
Optional Boolean attribute.
If true, the 502.5 - Process Failure page is suppressed, and the 502 status code page configured in the web.config takes precedence.
Optional Boolean attribute.
If true, the token is forwarded to the child process listening on %ASPNETCORE_PORT% as a header 'MS-ASPNETCORE-WINAUTHTOKEN' per request. It's the responsibility of that process to call CloseHandle on this token per request.
Optional string attribute.
Specifies the hosting model as in-process ( InProcess / inprocess ) or out-of-process ( OutOfProcess / outofprocess ).
Optional integer attribute.
Specifies the number of instances of the process specified in the processPath setting that can be spun up per app.
†For in-process hosting, the value is limited to 1 .
Setting processesPerApplication is discouraged. This attribute will be removed in a future release.
Required string attribute.
Optional integer attribute.
Specifies the number of times the process specified in processPath is allowed to crash per minute. If this limit is exceeded, the module stops launching the process for the remainder of the minute.
Not supported with in-process hosting.
Optional timespan attribute.
Doesn't apply to in-process hosting. For in-process hosting, the module waits for the app to process the request.
Valid values for minutes and seconds segments of the string are in the range 0-59. Use of 60 in the value for minutes or seconds results in a 500 - Internal Server Error.
Optional integer attribute.
Duration in seconds that the module waits for the executable to gracefully shutdown when the app_offline.htm file is detected.
Optional integer attribute.
Duration in seconds that the module waits for the executable to start a process listening on the port. If this time limit is exceeded, the module kills the process.
When hosting in-process: The process is not restarted and does not use the rapidFailsPerMinute setting.
When hosting out-of-process: The module attempts to relaunch the process when it receives a new request and continues to attempt to restart the process on subsequent incoming requests unless the app fails to start rapidFailsPerMinute number of times in the last rolling minute.
A value of 0 (zero) is not considered an infinite timeout.
Optional Boolean attribute.
If true, stdout and stderr for the process specified in processPath are redirected to the file specified in stdoutLogFile .
Optional string attribute.
Specifies the relative or absolute file path for which stdout and stderr from the process specified in processPath are logged. Relative paths are relative to the root of the site. Any path starting with . are relative to the site root and all other paths are treated as absolute paths. Any folders provided in the path are created by the module when the log file is created. Using underscore delimiters, a timestamp, process ID, and file extension ( .log ) are added to the last segment of the stdoutLogFile path. If .\logs\stdout is supplied as a value, an example stdout log is saved as stdout_20180205194132_1934.log in the logs folder when saved on February 5, 2018 at 19:41:32 with a process ID of 1934.
Set environment variables
Environment variables can be specified for the process in the processPath attribute. Specify an environment variable with the child element of an collection element. Environment variables set in this section take precedence over system environment variables.
The following example sets two environment variables in web.config . ASPNETCORE_ENVIRONMENT configures the app's environment to Development . A developer may temporarily set this value in the web.config file in order to force the Developer Exception Page to load when debugging an app exception. CONFIG_DIR is an example of a user-defined environment variable, where the developer has written code that reads the value on startup to form a path for loading the app's configuration file.
An alternative to setting the environment directly in web.config is to include the property in the publish profile ( .pubxml ) or project file. This approach sets the environment in web.config when the project is published:
Only set the ASPNETCORE_ENVIRONMENT environment variable to Development on staging and testing servers that aren't accessible to untrusted networks, such as the Internet.
Configuration of IIS with web.config
For more information, see the following topics:
To set environment variables for individual apps running in isolated app pools (supported for IIS 10.0 or later), see the AppCmd.exe command section of the Environment Variables topic in the IIS reference documentation.
Configuration sections of web.config
Transform web.config
If you need to transform web.config on publish, see Transform web.config. You might need to transform web.config on publish to set environment variables based on the configuration, profile, or environment.
Расположение файла web.config
Файл web.config должен постоянно присутствовать в развертывании, а также иметь правильное имя и возможность настроить сайт для нормального запуска. Никогда не удаляйте файл web.config из развертывания в рабочей среде.
Чтобы веб-пакет SDK не преобразовывал файл web.config , используйте свойство в файле проекта:
Следующий файл web.config опубликован для автономного развертывания.
Когда приложение развернуто в службе приложений Azure, путь stdoutLogFile задан как \\?\%home%\LogFiles\stdout . Путь сохраняет журналы stdout в папке LogFiles , расположение которой автоматически создается службой.
Сведения о конфигурации дочерних приложений IIS см. в разделе Расширенные конфигурации.
Атрибуты элемента aspNetCore
Необязательный строковый атрибут.
Аргументы для исполняемого файла, указанного в атрибуте processPath .
Дополнительный логический атрибут.
Если значение равно true, страница 502.5 — ошибка процесса подавляется и страница в файле web.config с кодом состояния 502 имеет более высокий приоритет.
Дополнительный логический атрибут.
Если значение равно true, маркер безопасности отправляется дочернему процессу, прослушивающему порт %ASPNETCORE_PORT% , как заголовок MS-ASPNETCORE-WINAUTHTOKEN каждого запроса. Этот процесс вызывает CloseHandle по этому маркеру безопасности каждого запроса.
Необязательный строковый атрибут.
Указывает модель размещения — внутри процесса ( InProcess / inprocess ) или вне процесса ( OutOfProcess / outofprocess ).
Необязательный целочисленный атрибут.
Указывает число экземпляров процесса, заданное в параметре processPath , которое может появиться для каждого приложения.
†Для внутрипроцессного размещения установлено ограничение 1 .
Параметр processesPerApplication не рекомендуется. Этот атрибут будет удален в будущем выпуске.
Обязательный строковый атрибут.
Необязательный целочисленный атрибут.
Указывает количество сбоев за минуту, которыми может завершиться процесс, указанный в processPath . Если этот предел превышен, модуль останавливает запуск процесса на оставшуюся часть минуты.
Не поддерживается для внутрипроцессного размещения.
Необязательный атрибут timespan.
Не применяется к внутрипроцессному размещению. Для внутрипроцессного размещения модуль ожидает, пока приложение не обработает запрос.
Допустимые значения для сегментов минут и секунд в строках находятся в диапазоне 0–59. Значение 60 для минут и секунд приведет к ошибке 500 — внутренняя ошибка сервера.
Необязательный целочисленный атрибут.
Длительность ожидания модуля в секундах, пока произойдет правильное выключение исполняемого файла при обнаружении файла app_offline.htm .
Необязательный целочисленный атрибут.
Время в секундах, которое модуль ожидает, пока запустится процесс прослушивания порта исполняемого файла. Если этот предел превышен, модуль завершает процесс.
Внутрипроцессное размещение. Процесс не перезапускается, и параметр rapidFailsPerMinute не используется.
Размещение вне процесса. Модуль пытается перезапустить процесс при получении нового запроса и будет продолжать пытаться перезапустить процесс для последующих входящих запросов, если не удается запустить приложение определенное в атрибуте rapidFailsPerMinute количество раз за последнюю минуту.
Значение 0 (ноль) не считается бесконечным временем ожидания.
Дополнительный логический атрибут.
Если значение равно true, stdout и stderr для процесса, указанного в атрибуте processPath , перенаправляются к файлу, заданному в атрибуте stdoutLogFile .
Необязательный строковый атрибут.
Указывает относительный или абсолютный путь к файлу, для которого регистрируются stdout и stderr из процесса, указанного в processPath . Относительные пути задаются относительно корневого каталога веб-сайта. Любой путь, начинающийся с . , относится к корневому каталогу веб-сайта, а все остальные пути рассматриваются как абсолютные пути. Все папки, указанные в пути, создаются модулем при создании файла журнала. С помощью разделителей подчеркивания метка времени, идентификатор процесса и расширение файла ( .log ) добавляются к последнему сегменту пути журнала stdoutLogFile . Если в качестве значения задано значение .\logs\stdout , например, журнал stdout сохраняется как stdout_20180205194132_1934.log в папке logs с датой 5 февраля 2018 г. в 19:41:32 с идентификатором процесса 1934.
Настройка переменных среды
Переменные среды для процесса можно указать в атрибуте processPath . Укажите переменную среды с дочерним элементом элемента коллекции . Переменные среды, установленные в этом разделе, имеют приоритет над переменными системной среды.
Вместо установки среды напрямую в web.config можно включить свойство в профиль публикации ( .pubxml ) или файл проекта. При этом подходе во время публикации проекта среда задается в файле web.config :
Установите только переменную среды ASPNETCORE_ENVIRONMENT для Development на серверах промежуточных процессов и тестирования, которые недоступны для ненадежных сетей, таких как Интернет.
Настройка служб IIS с помощью web.config
Дополнительные сведения см. в следующих разделах:
Сведения о настройке переменных среды для отдельных приложений, выполняющихся в изолированных пулах приложений (такая возможность поддерживается в службах IIS, начиная с версии 10.0), см. в разделе Команда AppCmd.exe статьи Переменные среды в справочной документации по службам IIS.
Разделы конфигурации web.config
Преобразование web.config
Если вам нужно преобразовать web.config при публикации, см. статью Преобразование web.config. Возможно, вам потребуется выполнить преобразование web.config при публикации, чтобы задать переменные среды на основе конфигурации, профиля или среды.
Расположение файла web.config
Файл web.config должен постоянно присутствовать в развертывании, а также иметь правильное имя и возможность настроить сайт для нормального запуска. Никогда не удаляйте файл web.config из развертывания в рабочей среде.
Чтобы веб-пакет SDK не преобразовывал файл web.config , используйте свойство в файле проекта:
Следующий файл web.config опубликован для автономного развертывания.
Когда приложение развернуто в службе приложений Azure, путь stdoutLogFile задан как \\?\%home%\LogFiles\stdout . Путь сохраняет журналы stdout в папке LogFiles , расположение которой автоматически создается службой.
Сведения о конфигурации дочерних приложений IIS см. в разделе Расширенные конфигурации.
Атрибуты элемента aspNetCore
Необязательный строковый атрибут.
Аргументы для исполняемого файла, указанного в атрибуте processPath .
Дополнительный логический атрибут.
Если значение равно true, страница 502.5 — ошибка процесса подавляется и страница в файле web.config с кодом состояния 502 имеет более высокий приоритет.
Дополнительный логический атрибут.
Если значение равно true, маркер безопасности отправляется дочернему процессу, прослушивающему порт %ASPNETCORE_PORT% , как заголовок MS-ASPNETCORE-WINAUTHTOKEN каждого запроса. Этот процесс вызывает CloseHandle по этому маркеру безопасности каждого запроса.
Необязательный строковый атрибут.
Указывает модель размещения — внутри процесса ( InProcess / inprocess ) или вне процесса ( OutOfProcess / outofprocess ).
Необязательный целочисленный атрибут.
Указывает число экземпляров процесса, заданное в параметре processPath , которое может появиться для каждого приложения.
†Для внутрипроцессного размещения установлено ограничение 1 .
Параметр processesPerApplication не рекомендуется. Этот атрибут будет удален в будущем выпуске.
Обязательный строковый атрибут.
Необязательный целочисленный атрибут.
Указывает количество сбоев за минуту, которыми может завершиться процесс, указанный в processPath . Если этот предел превышен, модуль останавливает запуск процесса на оставшуюся часть минуты.
Не поддерживается для внутрипроцессного размещения.
Необязательный атрибут timespan.
Не применяется к внутрипроцессному размещению. Для внутрипроцессного размещения модуль ожидает, пока приложение не обработает запрос.
Допустимые значения для сегментов минут и секунд в строках находятся в диапазоне 0–59. Значение 60 для минут и секунд приведет к ошибке 500 — внутренняя ошибка сервера.
Необязательный целочисленный атрибут.
Длительность ожидания модуля в секундах, пока произойдет правильное выключение исполняемого файла при обнаружении файла app_offline.htm .
Необязательный целочисленный атрибут.
Время в секундах, которое модуль ожидает, пока запустится процесс прослушивания порта исполняемого файла. Если этот предел превышен, модуль завершает процесс.
Внутрипроцессное размещение. Процесс не перезапускается, и параметр rapidFailsPerMinute не используется.
Размещение вне процесса. Модуль пытается перезапустить процесс при получении нового запроса и будет продолжать пытаться перезапустить процесс для последующих входящих запросов, если не удается запустить приложение определенное в атрибуте rapidFailsPerMinute количество раз за последнюю минуту.
Значение 0 (ноль) не считается бесконечным временем ожидания.
Дополнительный логический атрибут.
Если значение равно true, stdout и stderr для процесса, указанного в атрибуте processPath , перенаправляются к файлу, заданному в атрибуте stdoutLogFile .
Необязательный строковый атрибут.
Указывает относительный или абсолютный путь к файлу, для которого регистрируются stdout и stderr из процесса, указанного в processPath . Относительные пути задаются относительно корневого каталога веб-сайта. Любой путь, начинающийся с . , относится к корневому каталогу веб-сайта, а все остальные пути рассматриваются как абсолютные пути. Все папки, указанные в пути, создаются модулем при создании файла журнала. С помощью разделителей подчеркивания метка времени, идентификатор процесса и расширение файла ( .log ) добавляются к последнему сегменту пути журнала stdoutLogFile . Если в качестве значения задано значение .\logs\stdout , например, журнал stdout сохраняется как stdout_20180205194132_1934.log в папке logs с датой 5 февраля 2018 г. в 19:41:32 с идентификатором процесса 1934.
Настройка переменных среды
Переменные среды для процесса можно указать в атрибуте processPath . Укажите переменную среды с дочерним элементом элемента коллекции . Переменные среды, установленные в этом разделе, имеют приоритет над переменными системной среды.
Вместо установки среды напрямую в web.config можно включить свойство в профиль публикации ( .pubxml ) или файл проекта. При этом подходе во время публикации проекта среда задается в файле web.config :
Установите только переменную среды ASPNETCORE_ENVIRONMENT для Development на серверах промежуточных процессов и тестирования, которые недоступны для ненадежных сетей, таких как Интернет.
Настройка служб IIS с помощью web.config
Дополнительные сведения см. в следующих разделах:
Сведения о настройке переменных среды для отдельных приложений, выполняющихся в изолированных пулах приложений (такая возможность поддерживается в службах IIS, начиная с версии 10.0), см. в разделе Команда AppCmd.exe статьи Переменные среды в справочной документации по службам IIS.
Разделы конфигурации web.config
Преобразование web.config
Если вам нужно преобразовать web.config при публикации, см. статью Преобразование web.config. Возможно, вам потребуется выполнить преобразование web.config при публикации, чтобы задать переменные среды на основе конфигурации, профиля или среды.
Важно понимать, что файл web.config в веб-приложении не может переопределять все параметры в файле machine.config. Некоторые параметры в этом файле, такие как параметры модели процессов, не могут изменяться для каждого приложения отдельно. Другие параметры, наоборот, являются специфичными для приложений. Это значит, что их можно устанавливать в файле web.config, который находится в корневом виртуальном каталоге веб-сайта, но нельзя в файлах web.config, расположенных в подкаталогах.
Как и все XML-документы, содержимое файла web.config чувствительно к регистру символов. Каждый параметр использует стиль Camel и начинается с прописной буквы. Это означает, что записывать вместо не допускается.
Наследование конфигурации
Сначала применяются используемые по умолчанию параметры из файла machine.config.
Далее применяются параметры из файла web.config, находящегося в корневом каталоге компьютера. Этот файл web.config хранится в том же каталоге Config, что и файл machine.config.
Если в корневом каталоге приложения А имеется файл web.config, тогда следующими применяются параметры, указанные в нем.
Если в подкаталоге В имеется файл web.config, тогда следующими применяются параметры, указанные в этом файле.
Если в подкаталоге С есть файл web.config, тогда напоследок применяются параметры из него.
этой последовательности, показанной на рисунке, важно обратить внимание, что подкаталогов может быть сколько угодно, но параметры, применяемые в шагах 1 и 2, имеют особое значение. Причина в том, что некоторые параметры (такие как учетная запись Windows, используемая для выполнения кода) могут применяться только на уровне machine.config, а некоторые (вроде типа аутентификации, используемого веб-приложением) — только на уровне корневого каталога приложения.
Благодаря этому, на уровне подкаталогов может быть указан лишь небольшой набор параметров, отличающихся от остальных параметров веб-приложения. Одной из причин использования в приложении множества подкаталогов является необходимость применять отличающиеся параметры безопасности. Файлы, нуждающиеся в защите, затем могут быть помещены в специальный каталог с файлом web.config, который определяет более строгие параметры безопасности, чем в корневом виртуальном каталоге.
Если возникает конфликт, параметры из файла web.config, находящегося во вложенном каталоге, всегда переопределяют те, что унаследованы от родителя. Однако существует одно исключение. Можно назначить специальные заблокированные разделы параметров, которые изменять нельзя. Этот прием более подробно описан в следующем разделе.
Если вы разрабатываете веб-проект (а не беспроектный веб-сайт), в состав этого проекта будут также включены файлы web.Debug.config и web.Release.config. Эти файлы предназначены для переключения между параметрами, используемыми при тестировании веб-приложения, и параметрами, которые необходимы во время его развертывания в производственной среде. Однако они не дают никакого эффекта при запуске приложения в Visual Studio, поскольку в этом случае они полностью игнорируются.
Использование элементовЭтот файл web.config, по сути, играет роль двух конфигурационных файлов. Он приводит к такому же результату, как если бы вы разделили параметры настройки на два отдельных файла web.config и поместили их в подкаталог Secure.
В одном конфигурационном файле может находиться сколько угодно различных элементов . Однако элемент часто не используется, поскольку гораздо проще управлять и обновлять параметры настройки конфигурации, когда они разделены на отдельные файлы. Тем не менее, существует один сценарий, в котором элемент обеспечивает функциональность, которую не удастся получить каким-либо другим способом. Это необходимо тогда, когда требуется заблокировать специфические параметры настройки таким образом, чтобы их нельзя было переопределить.
Чтобы получить представление о работе этой технологии, рассмотрим приведенный ниже пример. В нем определены две группы параметров настройки, для одной из которых атрибут allowOverride дескриптора устанавливается в false:
Атрибут allowOverride элемента предназначен в основном для компаний, занимающихся веб-хостингом, которым нужно защитить некоторые параметры настройки от изменения. В этом случае администратору придется модифицировать файл machine.config на веб-сервере и использовать элемент для блокировки различных разделов.
При блокировании параметров настройки в файле machine.config возможны два варианта: первый — заблокировать параметры сразу для всех приложений, опустив в дескрипторе атрибут path, а второй — заблокировать параметры только для конкретного приложения, указав в атрибуте path имя соответствующего веб-приложения.
Элемент Раздел РазделСпециальные параметры настройки в файле web.config добавляются в элемент . Все добавляемые специальные параметры записываются в виде простых строковых переменных.
Необходимость использовать в файле web.config специальные параметры может возникать по нескольким причинам. Чаще всего это требуется, когда нужно записать жестко закодированную, но изменяемую информацию для подключения к внешним источникам, например, строки запросов к базе данных, пути к файлам и URL-адреса веб-служб. Конфигурационный файл web.config может изменяться в любое время, что позволяет обновлять конфигурацию приложения по мере изменения характеристик его физического размещения, не компилируя его при этом заново.
Специальные параметры вводятся с использованием элемента , который идентифицирует уникальное имя переменной (ключ) и ее содержимое (значение). Ниже приведен пример добавления двух новых специальных параметров настройки:
Для использования класса WebConfigurationSettings сначала необходимо импортировать пространство имен System.Web.Configuration, чтобы иметь возможность ссылаться на этот класс, не указывая его длинное полностью уточненное имя:
Далее останется просто извлечь требуемое значение по имени:
Ниже показана тестовая веб-страница в действии:
В данном случае при попытке извлечь несуществующее значение никакой ошибки не возникает. Если есть подозрение, что это может стать источником проблем, тогда перед извлечением значения позаботьтесь о проверке на предмет наличия нулевой ссылки.
Значения, содержащиеся в элементе конфигурационного файла, доступны любому классу в приложении, а также любому компоненту, который в нем используется, будь то класс веб-формы, класс бизнес-логики, класс доступа к данным или что-нибудь еще. Во всех этих случаях класс ConfigurationSettings используется абсолютно одинаково.
РазделЭтот раздел позволяет определять строки соединения с базой данных, которые будут использоваться где-нибудь в приложении. Поскольку строки соединения точно будут использоваться многократно для поддержки пула соединений и, скорее всего, понадобится возможность модифицировать их без повторной компиляции веб-приложения, вполне логично поместить их в файл web.config.
Для извлечения строк соединения в коде служит статическое свойство WebConfigurationManager.ConnectionStrings.
Коллекция ConnectionStrings включает в себя строки соединения, которые были определены как непосредственно в файле web.config, так и в конфигурационных файлах более высокого уровня (а именно — в корневом файле web.config и файле machine.config). Это означает, что вы автоматически получаете строку соединения по имени LocalSqlServer, которая указывает на локальный экземпляр SQL Server Express (который представляет собой сокращенную версию SQL Server и включен в состав Visual Studio).
Читайте также: