Иерархия и наследование файла конфигурации ASP.NET

Обновлен: Ноябрь 2007

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

В этом разделе содержатся следующие подразделы:

  • Структура конфигурации

  • Наследование конфигурации

  • Область параметров конфигурации

  • Расчет параметров конфигурации во время выполнения

  • Несколько ресурсов ASP.NET, настроенных в одном файле

  • Конфликты между параметрами на физических и виртуальных путях

  • Ограничение наследования ASP.NET

Структура конфигурации

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

  • Использование файлов конфигурации, применяемых к ресурсам внутри каталога, в котором размещен файл конфигурации, и ко всем дочерним каталогам.

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

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

  • Распределяет параметры конфигурации в логические группы.

Наследование конфигурации

Все приложения .NET Framework наследуют базовые параметры конфигурации и параметры по умолчанию от файла systemroot\Microsoft .NET\Framework\номер_версии\CONFIG\Machine.config. Файл Machine.config содержит параметры конфигурации на стороне сервера. Некоторые из этих параметров не могут быть переопределены файлами конфигурации, находящимися ниже в иерархии.

Клиентские приложения .NET (консольные приложения и приложения Windows) используют файл конфигурации имя_приложения.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.

Параметры конфигурации обычно добавляются к коллекциям с помощью дочернего элемента add, удаляются по имени ключа с помощью дочернего элемента remove, а удаление всей коллекции производится за счет дочернего элемента clear. Добавленный в дочерний файл конфигурации параметр переопределяет параметр с тем же именем ключа родительского файла конфигурации, только если не разрешены дубликаты.

ms178685.alert_note(ru-ru,VS.90).gifПримечание.

В некоторых коллекциях, применяемых в более ранних версиях платформы .NET Framework, используется другое имя дочернего элемента add. Например, в элементе customErrors для добавления настраиваемых ошибок в коллекцию используется дочерний элемент error.

Если получен запрос на файл в каталоге SubDir1, который не существует, ASP.NET приступает к поиску в иерархии конфигурации, начиная с самого ближнего файла Web.config (расположенного в текущем каталоге, если таковой существует, или в родительском каталоге). ASP.NET выполняет поиск элемента Элемент error для элемента customErrors (схема параметров ASP.NET), где атрибут statusCode равен «404». После обнаружения параметра конфигурации для ошибки 404 URL-адрес в атрибуте redirect возвращается в качестве ответа.

Область действия параметров конфигурации

Существуют различные области параметров конфигурации: некоторые действуют в глобальной области, другие — только на уровне приложения, корневого файла Web.config или Machine.config.

Область раздела конфигурации задается в атрибуте allowDefinition элемента Элемент section для элемента configSections (схема общих параметров) файла Machine.config для всех разделов, включенных в ASP.NET. Например, у элемента Элемент authentication (схема параметров ASP.NET) есть атрибут allowDefinition элемента MachineToApplication. Это означает, что элемент authentication может быть задан в файле Machine.config, корневом файле Web.config и файле Web.config на уровне приложения. Если элемент задается на уровне вложенной папки, возникает ошибка. Если для раздела не задан атрибут allowDefinition, то используется значение по умолчанию Everywhere.

Область параметра конфигурации для каждого элемента представлена в разделах Параметры конфигурации ASP.NET и Общие параметры конфигурации (ASP.NET) таблицы Информация об элементе рядом с разделом Настраиваемые расположения.

В таблице далее перечислены уровни, на которых расположены файла в иерархии конфигурации, имена файлов и описание наиболее важных характеристик наследования каждого файла.

Уровень конфигурации

Имя файла

Описание файла

Сервер

Machine.config

Файл Machine.config содержит схему ASP.NET для всех веб-приложений сервера. Этот файл находится в верхней части иерархии слияния конфигураций.

Корневой файл

Web.config

Серверный файл Web.config хранится в том же каталоге, что и файл Machine.config и содержит значения по умолчанию для большинства сценариев конфигурации system.web. Во время выполнения слияние этого файла осуществляется вторым с начала в иерархии конфигурации.

Веб-узел

Файл Web.config

Файл Web.config определенного веб-узла содержит параметры, относящиеся к веб-узлу и наследующиеся в нижнем направлении для всех приложений ASP.NET и вложенных папок узла.

Корневой каталог приложения ASP.NET

Файл Web.config

Файл Web.config определенного приложения ASP.NET расположен в корневом каталоге приложения и содержит параметры, относящиеся к веб-узлу и наследующиеся в нижнем направлении для всех вложенных папок ветви.

Вложенная папка приложения ASP.NET

Файл Web.config

Файл Web.config определенной вложенной папки приложения содержит параметры, относящиеся к данной вложенной папке и наследующиеся в нижнем направлении для всех вложенных папок ветви.

Каталог клиентского приложения

Название_файла.config

Файл Название_файла.config содержит параметры клиентского приложения Windows (не веб-приложения).

Элемент ProcessModel

Элемент Элемент processModel (схема параметров ASP.NET) настраивает модель обработки, используемую для сервера, включая все приложения ASP.NET, находящиеся на сервере. В этой связи параметры processModel могут быть размещены только в файле Machine.config; их переопределение с помощью настроек любого файла Web.config невозможно.

Изменения элемента processModel вступают в силу только после перезапуска рабочего процесса, а не сразу после изменения параметра, как это происходит с другими элементами конфигурации.

ms178685.alert_note(ru-ru,VS.90).gifПримечание.

Если ASP.NET выполняется в режиме изоляции рабочих процессов в Internet Information Services (IIS) 6.0, используется модель обработки IIS 6.0, а параметры раздела processModel файла Machine.config игнорируются. Для настройки удостоверения, цикличности и других значений модели процессов следует использовать диспетчер служб Интернета, который также позволит настроить для приложения рабочий процесс IIS. При настройке IIS 6.0 для выполнения ASP.NET в режиме изоляции IIS 5.0 использование ASP.NET 2.0 невозможно.

Расчет параметров конфигурации во время выполнения

Когда на сервер приходит запрос к определенному веб-ресурсу, ASP.NET вычисляет параметры конфигурации этого ресурса по иерархической схеме, используя файлы конфигурации, находящиеся в виртуальном каталоге для запрашиваемого URL. Локальные параметры конфигурации переопределяют параметры родительских файлов конфигурации.

Эти параметры рассчитываются единожды, а затем кэшируются для последующих запросов. ASP.NET автоматически следит за внесением изменений в файл и повторно вычисляет значения в кэше при изменении любого файла конфигурации в иерархии файлов. При получении сервером запроса на определенный URL-адрес ASP.NET использует иерархию параметров конфигурации в кэше для поиска запрошенного ресурса.

Внесение изменений в конфигурацию вызывает перезапуск приложения, если только элемент раздела конфигурации не содержит атрибут restartOnExternalChanges="false" или параметр конфигурации не присутствует в отдельном файле, привязанном к файлу Web.config, использующему атрибут configSource.

Несколько ресурсов ASP.NET, настроенных в одном файле

При работе с большим количеством параметров конфигурации или управлении клиентскими веб-узлами, настроенными поставщиком услуг Интернета, можно хранить параметры для нескольких расположений в одном файле Web.config. С помощью атрибута path элемента location можно настроить несколько ресурсов ASP.NET, хранящихся во вложенных папках приложения.

Сведения об использовании элемента location см. в разделе Практическое руководство. Настройка отдельных каталогов с помощью параметров расположения.

Конфликты между параметрами на физических и виртуальных путях

Параметры конфигурации виртуальных каталогов не связаны со структурой физических каталогов, и виртуальные каталоги должны быть организованы так, чтобы избегать проблем с конфигурацией. Пусть, например, имеется файл ASP.NET с именем MyResource.aspx и следующей структурой физических каталогов.

C:
    \Subdir1
        \Subdir2
            \MyResource.aspx

Кроме того, возможно наличие файла конфигурации, расположенного в Subdir1, виртуальном каталоге с именем Vdir1, отображаемым в c:\Subdir1, и виртуальном каталог с именем Vdir2, отображаемым в c:\Subdir1\Subdir2. При обращении клиента к ресурсу, физически расположенному в c:\Subdir1\Subdir2\MyResource.aspx с использованием URL-адреса https://localhost/vdir1/subdir2/MyResource.aspx, ресурс наследует параметры конфигурации из Vdir1. Однако при обращении клиента к тому же самому ресурсу по URL-адресу https://localhost/vdir2/MyResource.aspx ресурс не будет наследовать параметры конфигурации из Vdir1. Создание виртуальных каталогов таким образом может привести к непредсказуем результатам или даже сбою приложения. Не рекомендуется прибегать к вложенным виртуальным каталогам, либо использовать при этом только один файл Web.config.

Ограничение наследования ASP.NET

Ограничение наследования параметров конфигурации позволит улучшить производительность, обеспечить высокую надежность и упростить администрирование приложения. Управление ограничениями осуществляется с помощью атрибутов allowOverride, lockAttributes, lockAllAttributesExcept, lockAllElementsExcept, lockItem и lockElements. Дополнительные сведения об этих атрибутах см. в разделе Общие атрибуты, наследуемые элементами раздела.

Параметры конфигурации для необработанных исключений

В процессе создания приложения ASP.NET параметры, содержащиеся в файле Aspnet.config, обрабатываются с помощью среды CLR. Указанные параметры, наряду с другими, определяют поведение среды CLR по отношению к необработанным исключениям. К числу таких параметров относятся следующие:

<legacyUnhandledExceptionPolicy enabled="false" />

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

См. также

Задачи

Практическое руководство. Настройка отдельных каталогов с помощью параметров расположения

Пошаговое руководство. Отключение параметров конфигурации ASP.NET

Ссылки

Общие атрибуты, наследуемые элементами раздела