Структура файла конфигурации ASP.NET (разделы и обработчики разделов)
Обновлен: Ноябрь 2007
Все сведения о конфигурации ASP.NET находятся внутри элемента configuration в файлах Web.config. Данные, содержащиеся в этом элементе, разбиты на две основных области: область объявления обработчиков разделов конфигурации и область параметров разделов конфигурации.
Объявления обработчиков разделов конфигурации
Область объявления обработчиков разделов конфигурации находится внутри элемента configSections в файлах Web.config. Она содержит элементы разделов конфигурации ASP.NET, в которых объявляются обработчики. Эти объявления обработчиков разделов конфигурации могут быть вложены в элементы sectionGroup, что помогает организовать сведения о конфигурации. Обычно элементы sectionGroup представляют пространство имен, к которому применяются параметры конфигурации. Например, все обработчики разделов конфигурации ASP.NET собираются в группу разделов system.web, как показано в следующем примере кода.
<sectionGroup name="system.web"
type="System.Web.Configuration.SystemWebSectionGroup, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<!-- <section /> elements. -->
</sectionGroup>
Для каждого раздела конфигурации в области параметров раздела конфигурации имеется объявление обработчиков разделов конфигурации. Обработчик разделов является классом платформы .NET Framework, который реализует интерфейс ConfigurationSection. Объявления обработчиков разделов содержат имя раздела параметров конфигурации (например pages) и имя класса обработчика разделов, обрабатывающего данные конфигурации в этом разделе (например System.Web.Configuration.PagesSection). Это показано в следующем примере кода.
<section name="pages"
type="System.Web.Configuration.PagesSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
</section>
Обработчик разделов конфигурации достаточно объявить только один раз. Используемые по умолчанию обработчики разделов для разделов конфигурации ASP.NET уже объявлены в файле Machine.config по умолчанию. Корневой файл Web.config и другие файлы конфигурации в приложениях ASP.NET автоматически наследуют от обработчиков конфигурации, объявленных в файле Machine.config. При создании пользовательского класса обработчиков разделов, обрабатывающего раздел пользовательских параметров, необходимо объявить только новый обработчик разделов.
Предварительно заданные разделы параметров конфигурации ASP.NET перечислены в разделе Параметры конфигурации ASP.NET. Сведения об определении собственных разделов параметров и разработке собственных обработчиков разделов конфигурации для управления ими см. в разделах Классы, использующиеся для создания обработчиков определенных разделов и Практическое руководство. Создание пользовательских разделов конфигурации с помощью класса ConfigurationSection.
Параметры разделов конфигурации
Область параметров разделов конфигурации следует за областью объявления обработчиков разделов конфигурации и содержит собственно параметры конфигурации.
По умолчанию для каждого элемента section и sectionGroup в области configSections существует элемент раздела конфигурации, заданный внутренне или в одном из корневых файлов конфигурации. Эти значения по умолчанию можно просмотреть в файле systemroot\Microsoft.NET\Framework\versionNumber\CONFIG\Machine.config.comments.
Элемент раздела конфигурации может также содержать дочерние элементы, обрабатываемые тем же обработчиком разделов, что и родительский элемент. Например, следующий элемент pages содержит элемент namespaces, для которого соответствующий обработчик разделов отсутствует, так как его обработка выполняется обработчиком разделов pages.
<pages
buffer="true"
enableSessionState="true"
asyncTimeout="45"
<!-- Other attributes. -->
>
<namespaces>
<add namespace="System" />
<add namespace="System.Collections" />
</namespaces>
</pages>
Пример из файла Web.config
В следующем примере кода показано, каким участкам файла Web.config соответствуют предыдущие примеры кода. Обратите внимание на то, что у элемента namespaces элемента pages отсутствует объявление обработчика разделов конфигурации. Это связано с тем, что обработчик разделов System.Web.Configuration.PagesSection обрабатывает все дочерние элементы раздела параметров pages.
<?xml version="1.0" encoding="us-ascii"?>
<configuration>
<!-- Configuration section-handler declaration area. -->
<configSections>
<sectionGroup name="system.web"
type="System.Web.Configuration.SystemWebSectionGroup, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<section
name="pages"
type="System.Web.Configuration.PagesSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
/>
<!-- Other <section /> elements. -->
</sectionGroup>
<!-- Other <sectionGroup /> and <section /> elements. -->
</configSections>
<!-- Configuration section settings area. -->
<pages
buffer="true"
enableSessionState="true"
asyncTimeout="45"
<!-- Other attributes. -->
>
<namespaces>
<add namespace="System" />
<add namespace="System.Collections" />
</namespaces>
</pages>
<!-- Other section settings elements. -->
</configuration>
Проблемы, связанные с редактированием
Элементы, содержащиеся в разделах конфигурации, должны соответствовать правильному формату XML, поэтому эти элементы и атрибуты зависят от регистра. Существует много способов изменения параметров конфигурации. Дополнительные сведения см. в разделе Изменение файлов конфигурации ASP.NET.
Обработчики пользовательских разделов конфигурации должны создаваться программно перед использованием элементов пользовательских разделов в файлах конфигурации ASP.NET. Дополнительные сведения см. в разделе Практическое руководство. Создание пользовательских разделов конфигурации с помощью класса ConfigurationSection.
Атрибуты Path в файлах конфигурации
При задании ссылки на путь веб-приложения атрибуты path в файлах Web.config могут начинаться с «~/», что указывает на корень приложения. Дополнительные сведения см. в разделе Путь к веб-узлу ASP.NET.
См. также
Задачи
Другие ресурсы
Администрирование веб-узлов ASP.NET