Структура конфигурации
Файлы конфигурации ASP.NET называются файлами Web.config и могут располагаться в нескольких каталогах приложения ASP.NET. Иерархия конфигурации ASP.NET имеет следующие характеристики:
Используйте файл конфигурации, который применяется к ресурсам в каталоге, в котором находится файл конфигурации, и во всех его подкаталогах.
Позволяет разместить данные конфигурации в месте, обеспечивающем соответствующую область действия (весь компьютер, все веб-приложения, одно приложение или подкаталог внутри этого приложения).
Позволяет переопределить параметры конфигурации, унаследованные от более высоких уровней иерархии конфигурации. Также позволяет блокировать параметры конфигурации, чтобы предотвратить их перезапись параметрами конфигурации более низкого уровня.
Организуйте логические группы параметров конфигурации в разделы.
Наследование конфигурации
Все приложения .NET Framework наследуют базовые параметры конфигурации и значения по умолчанию из файла с именем systemrootMicrosoft .NETFrameworkversionNumberCONFIGMachine.config. Файл Machine.config используется для настроек конфигурации на уровне сервера. Некоторые из этих параметров невозможно переопределить в файлах конфигурации, расположенных ниже в иерархии.
Клиентские приложения .NET (консольные и Windows-приложения) используют файл конфигурации с именем ApplicationName.config для переопределения унаследованных параметров. Приложения ASP.NET используют файл конфигурации с именем Web.config для переопределения унаследованных параметров.
Корнем иерархии конфигурации ASP.NET является файл, называемый корневым файлом Web.config, который находится в том же каталоге, что и файл Machine.config. Корневой файл Web.config наследует все настройки из файла Machine.config. Корневой файл Web.config содержит параметры, которые применяются ко всем приложениям ASP.NET, использующим определенную версию .NET Framework. Поскольку каждое приложение ASP.NET наследует параметры конфигурации по умолчанию из корневого файла Web.config, вам нужно создавать файлы Web.config только для параметров, которые переопределяют параметры по умолчанию.
Наследование в элементах коллекций
Некоторые элементы конфигурации являются коллекциями, например элемент namespaces и элемент customErrors.
В коллекции параметры конфигурации обычно добавляются в коллекцию с помощью дочернего элемента «Добавить», удаляются по имени ключа с помощью дочернего элемента «Удалить» или вся коллекция может быть очищена с помощью дочернего элемента «Очистить». Если дубликаты не разрешены, настройки, добавленные в дочерний профиль, будут переопределять настройки с тем же именем ключа в родительском профиле.
Обратите внимание
, что в некоторых коллекциях, существовавших в более ранних версиях .NET Framework, для добавления дочерних элементов использовались разные имена элементов. Например, элемент customErrors использует дочерний элемент error для добавления в коллекцию пользовательских ошибок.
Если получен запрос на файл, который не существует в каталоге SubDir1, ASP.NET начнет поиск в иерархии конфигурации и начнет с самого локального файла Web.config (если он существует, он может находиться в текущем каталоге или может находиться в текущем каталоге) в родительском каталоге). ASP.NET будет искать в элементе error (схема настроек ASP.NET) элемента customErrors атрибут statusCode, равный «404». Как только ASP.NET обнаруживает ошибку 404 в настройках конфигурации, URL-адрес в атрибуте перенаправления возвращается в качестве ответа.
Область действия параметров конфигурации
Параметры конфигурации имеют разные области: некоторые имеют глобальную область, а некоторые действительны только для области приложения (корневой файл Web.config или файл Machine.config).
Область раздела конфигурации определяется для всех разделов, содержащихся в ASP.NET, в атрибутеallowDefinition элемента раздела configSections (схема общих параметров) в файле Machine.config. Например, элемент элемента аутентификации (схема настроек ASP.NET) имеет атрибутallowDefinition элемента MachineToApplication. Это означает, что элемент аутентификации можно установить в файле Machine.config уровня приложения, корневом файле Web.config и файле Web.config. Если он установлен на уровне подкаталога, будет выдана ошибка. Если атрибутallowDefinition не определен для раздела, значение по умолчанию — «Везде».
Объем параметров конфигурации для каждого элемента в параметрах конфигурации ASP.NET и общих параметрах конфигурации (ASP.NET) указан рядом с пунктом «Настраиваемый» в таблице «Информация об элементе».
В следующей таблице перечислены уровни каждого файла в иерархии конфигурации, имя каждого файла и описание важных наследуемых характеристик каждого файла.
Имя файла | уровня конфигурации | Описание файла |
Server | Machine.config | Файл Machine.config содержит схему ASP.NET для всех веб-приложений на сервере. Этот файл находится на верхнем уровне иерархии слияния конфигурации. |
корневого веб- | сервераWeb.config | хранится в том же каталоге, что и файл Machine.config, и содержит значения по умолчанию для большей части раздела конфигурации system.web. Во время выполнения этот файл объединяется со второго уровня сверху в иерархии конфигурации. |
Site | Web.config | Файл Web.config для определенного сайта содержит параметры, которые применяются к этому сайту и наследуются всеми приложениями ASP.NET и подкаталогами этого сайта. |
Корень приложения ASP.NET | Web.config | Файл Web.config для конкретного приложения ASP.NET находится в корневом каталоге приложения. Он содержит настройки. |
Подкаталог приложения ASP.NET | Web.config | Файл Web.config для подкаталога приложения содержит параметры, которые применяются к этому подкаталогу и наследуются вниз ко всем подкаталогам в его ветвях. |
Каталог клиентских приложений | ИмяПриложения.config ФайлApplicationName.config | содержит настройки для клиентских приложений Windows (не веб-приложений). |
Элемент ProcessModel
Элемент ProcessModel (схема параметров ASP.NET) настраивает модель обработки, используемую для сервера (включая все приложения ASP.NET на сервере). Таким образом, параметры ProcessModel могут быть помещены только в файл Machine.config и не могут быть переопределены настройками в любом файле Web.config.
Изменения элементаprocessModel вступят в силу только после перезапуска рабочего процесса, а не сразу после внесения изменений, как в других элементах конфигурации.
Примечание.
Когда ASP.NET работает в службах IIS 6.0 в режиме изоляции рабочего процесса, используется модель процесса IIS 6.0, а параметр в разделеprocessModel файла Machine.config игнорируется. Чтобы настроить идентификатор процесса, циклический перебор или другие значения модели процесса, используйте диспетчер IIS для настройки рабочего процесса IIS приложения.
Расчет параметров конфигурации во время выполнения
Когда сервер получает запрос на определенный веб-ресурс, ASP.NET иерархически вычисляет параметры конфигурации для этого ресурса, используя все файлы конфигурации, расположенные в пути к виртуальному каталогу запрошенного URL-адреса. Параметры локальной конфигурации переопределяют параметры родительского файла конфигурации.
Эти параметры вычисляются один раз, а затем кэшируются для последующих запросов. ASP.NET автоматически отслеживает изменения в файле и пересчитывает кэш при изменении любого файла конфигурации в иерархии файлов. Когда сервер получает запрос на определенный URL-адрес, ASP.NET использует иерархию параметров конфигурации в кеше, чтобы найти запрошенный ресурс.
Если атрибут restartOnExternalChanges="false" не включен в элемент раздела конфигурации или параметры конфигурации не содержатся в отдельном файле, связанном с файлом Web.config с помощью атрибута configSource, приложение перезапустится при изменении конфигурации.
Несколько ресурсов ASP.NET, настроенных в одном файле.
Сохранение параметров для нескольких расположений в одном файле Web.config может быть полезно при управлении большим количеством параметров конфигурации или управлении клиентскими веб-сайтами в настройках интернет-провайдера. Используя атрибут пути элемента location, вы можете настроить несколько конкретных ресурсов ASP.NET, хранящихся в подкаталоге приложения.
Сведения о том, как использовать элемент местоположения, см. в разделе Как настроить определенный каталог с помощью параметров местоположения.
Параметры в виртуальных каталогах конфликтуют с параметрами в физических каталогах.
Параметры конфигурации для виртуальных каталогов не зависят от структуры физических каталогов, и виртуальные каталоги должны быть организованы тщательно, чтобы предотвратить проблемы с конфигурацией. Например, у вас может быть файл ASP.NET с именем MyResource.aspx со следующей структурой физических каталогов.
C:
Subdir1
Subdir2
MyResource.aspx
Кроме того, у вас может быть файл конфигурации, расположенный в Subdir1, виртуальный каталог с именем Vdir1, сопоставленный с c:Subdir1, и виртуальный каталог с именем Vdir1, сопоставленный с c:Subdir1Subdir2. каталог Vdir2. Если клиент использует URL-адрес http://localhost/vdir1/subdir2/MyResource.aspx для доступа к ресурсу, физически расположенному по адресу c:Subdir1Subdir2MyResource.aspx, ресурс наследует параметры конфигурации из Vdir1. Однако если клиент обращается к тому же ресурсу по URL-адресу http://localhost/vdir2/MyResource.aspx, ресурс не наследует параметры из Vdir1. Создание виртуальных каталогов таким способом может привести к неожиданным результатам или даже к сбою приложения. Рекомендуется не вкладывать виртуальные каталоги, а при необходимости использовать только один файл Web.config.
Ограничение наследования ASP.NET.
Возможно, вам захочется ограничить наследование параметров конфигурации, чтобы повысить производительность приложения, обеспечить высокую надежность и упростить администрирование. Функциональность ограничения контролируется свойствамиallowOverride, lockAttributes, lockAllAttributesExcept, lockAllElementsExcept, lockItem и lockElements. Дополнительную информацию об этих свойствах см. в msdn.