Каждое веб-приложение наследует настройки из machine.config, а также из корневого web.config. При необходимости можно задать специфические параметры для отдельных приложений: метод аутентификации, режим отладки, язык по умолчанию или специальные страницы ошибок. Для этого в корневой виртуальный каталог вашего сайта добавьте файл web.config. Если нужно изменить настройки конкретного подкаталога, поместите туда дополнительный web.config.
Важно помнить: web.config не может переопределять все параметры из machine.config. Некоторые значения (например, модель процессов) фиксированы на уровне машины и менять их нельзя. Другие же – специфичны для приложения и могут быть заданы только в корневом каталоге сайта, но не в подкаталогах.
Весь контент конфигурационного файла ASP.NET находится внутри корневого элемента configuration. Внутри него лежит system.web, где размещаются параметры самого ASP.NET. Кроме того, в этом разделе есть элементы appSettings и connectionStrings для хранения пользовательских настроек и строк подключения к базам данных.
Ниже пример минимального файла web.config, создаваемого при новом проекте ASP.NET в Visual Studio:
<configuration> <system.web> <compilation debug="true" targetFramework="4.0" /> </system.web></configuration>
Как и любой XML, файл чувствителен к регистру: system.web – правильный вариант, а System.Web будет ошибкой.
Раздел system.web играет ключевую роль в настройке ASP.NET. Он содержит элементы для авторизации, сессий, трассировки и многое другое. В большинстве проектов также используется appSettings – хранит произвольные переменные, а connectionStrings – строки подключения к БД.
С помощью раздела system.webServer можно расширять конвейер ASP.NET дополнительными обработчиками и модулями HTTP.
Наследование конфигурации
ASP.NET использует многоуровневую систему, позволяющую задать параметры для разных частей приложения. Для этого создаются подкаталоги внутри виртуального каталога, каждый из которых может иметь собственный web.config. Благодаря наследованию каждая папка автоматически получает настройки родителя.
Рассмотрим запрос http://localhost/A/B/C/MyPage.aspx, где А – корень сайта. Порядок применения настроек:
- Сначала применяются глобальные параметры из machine.config.
- Затем берутся настройки из корневого web.config, расположенного в каталоге Config.
- Если у каталога А есть свой web.config, его параметры применяются далее.
- Параметры из web.config подкаталога В переопределяют предыдущие.
- Наконец, настройки из C берут верхний приоритет.
Важно: хотя можно иметь бесконечное число вложенных папок, параметры из первых двух уровней (machine и корневой каталог приложения) имеют особое значение. Некоторые свойства, как учетная запись Windows для выполнения кода, задекларированы только на уровне машины; а тип аутентификации – только в корне сайта.
Подкаталоги обычно используют для разделения параметров безопасности: файлы, требующие строгой защиты, помещаются в специальные каталоги с собственными web.config, где задаются более жесткие правила.
Если возникает конфликт – параметры из вложенного web.config всегда переопределяют унаследованные. Однако можно объявить блоки «заблокированными» (allowOverride="false") и тем самым запретить их изменение.
Для проектов, которые включают файлы web.Debug.config и web.Release.config, эти конфигурации позволяют переключать параметры между режимами разработки и продакшена. При запуске в Visual Studio они игнорируются.
Элемент location
С помощью location можно определить несколько групп настроек в одном файле. Атрибут path указывает путь к каталогу или файлу, для которого применяются данные настройки.
Пример: файл задает параметры как для корневого каталога, так и для подкаталога