Система конфигурации в IIS 7

Уолтер Оливер

Обзор

IIS 7 представляет новую систему конфигурации, в основе всех новых функций, связанных с администрированием. Система конфигурации основана на распределенных xml-файлах, которые содержат параметры конфигурации для всей платформы веб-сервера, включая IIS, ASP.NET и другие компоненты, такие как FTP 7.5; при необходимости их можно задать в каталогах содержимого вместе с веб-содержимым, если они разблокированы для этого уровня. Обратите внимание, что параметры конфигурации FTP 6.0 хранятся в MetaBase.

Различные уровни иерархии конфигурации могут делегироваться администратором компьютера другим пользователям, например владельцу сайта или разработчику приложения. Безопасные значения по умолчанию и стандартная блокировка ограничивают возможность записи в параметры конфигурации только для администратора компьютера (исключение составляют несколько параметров сайта, например DefaultDocument); однако сложные и детализированные функции блокировки позволяют безопасно разблокировать и делегировать управление определенными параметрами конфигурации для большего числа пользователей в рамках их области в веб-пространстве имен. Система является обратно совместимой на уровне API с предыдущими версиями IIS (после установки уровня совместимости MetaBase).

На корневом (или глобальном) уровне существует два отдельных файла:

  • system32\inetsrv\config\applicationHost.config: содержит глобальные значения по умолчанию для параметров веб-сервера (IIS).
  • \Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config. Содержит глобальные значения по умолчанию для параметров платформы .NET, включая некоторые из ASP.NET (остальные параметры находятся в web.config в той же папке, которая иногда называется корневой web.config).

Причина, по которой все еще существуют два отдельных файла, заключается в том, что две технологии версионируются по-разному (по расписанию и с точки зрения продукта). IIS является частью Windows, а версия .NET Framework может изменяться независимо.

В каталогах веб-содержимого могут присутствовать необязательные файлы web.config, которые управляют поведением на их уровне иерархии и на нижележащих уровнях. Они могут быть локальными или удаленными (например, если папка содержимого находится на общей сетевой папке по UNC). Они могут содержать службы IIS, ASP.NET или любые другие параметры конфигурации платформы .NET, которые можно указать на их уровне. По умолчанию нет web.config файлов.

Hierarchy

С точки зрения иерархии наследования, корневым файлом является machine.config, затем идет web.config в том же каталоге, который называется корневым web.config, потом applicationHost.config, а затем необязательные файлы web.config, используемые в зависимости от пространства имен, как показано на следующей схеме. Схема, показывающая связь между файлами, содержащимися в пространствах имен I S 7 и Config Files.

Разделы

В файле конфигурации параметры упорядочиваются структурированным образом в соответствии с единицей, называемой «раздел». Раздел конфигурации — это группа логически связанных параметров, которые можно развернуть или удалить из системы целиком и которые обычно используются одним серверным модулем.

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

Разделы группируются в логически связанные коллекции, называемые "группами разделов". Группы разделов не являются единицами развертывания ресурсов, регистрации или какой-либо другой значимой операции (например, блокировки, шифрование). В них нет настроек. Их целью является дальнейшее структурирование организации параметров и предотвращение длинного неструктурированного списка разделов конфигурации. Они используются для построения иерархии параметров, поэтому имеют родительские/дочерние отношения между собой.

Другими словами, группы разделов можно вложить. Данный раздел всегда принадлежит только одной группе разделов и не может содержать другие разделы (или группы разделов). Заданная группа разделов может принадлежать родительской группе разделов и может содержать ноль или несколько дочерних групп разделов. Обычно он содержит несколько разделов; в противном случае нет хорошей причины, чтобы иметь ее в первую очередь (однако клиенты могут расширить схему, создав собственные группы разделов, имеющие только один раздел, по какой-либо причине).

Ниже приведен пример, демонстрирующий разделы и группы разделов:

<!-- section group for web server configuration -->
<system.webServer>
  <!-- section group for web server security configuration -->
  <security>
    <!-- section group for web server authentication configuration -->
    <authentication>
      <!-- three sections for authentication -->
      <basicAuthentication ... />
      <windowsAutnentication ... />
      <anonymousAuthentication ... />
    </authentication>
  </security>
</system.webServer>

У каждого раздела есть имя. Короткое имя — это имя самого раздела, а длинное имя — полное имя, включая все содержащиеся группы разделов. Например, полное имя windowsAuthentication — system.webServer/security/authentication/windowsAuthentication. Эта иерархическая организация позволяет использовать будущие разделы (и группы разделов) с одинаковым именем, но в разных группах разделов.

Каждый уровень пространства имен URL-адреса может иметь связанную конфигурацию. Конфигурация для заданного уровня передается на дочерние уровни, если только не будет явно переопределена на дочернем уровне. Простой способ достижения конфигурации по URL-адресу — это использование файлов web.config в папках файловой системы на физическом диске, которые сопоставлены с виртуальными путями. На корневом уровне (на уровне компьютера) следует использовать отдельные файлы в зависимости от группы разделов конфигурации (которая будет определена позже в документе; для текущих целей рассмотрим его как имя XML-элемента, содержащего конфигурацию):

Группа разделов Описание Корневой файл
system.applicationHost Система активации Windows: модель процесса System32\inetsrv\config\applicationHost.config
system.webServer IIS: веб-сервер System32\inetsrv\config\applicationHost.config
System.web ASP.NET Windows\microsoft.net\framework\v2.0.50727\config\web.config
Система.* Другая платформа .NET Windows\microsoft.net\framework\v2.0.50727\config\machine.config
"[Прочие продукты компании Microsoft]" Прочее от Microsoft Windows\microsoft.net\framework\v2.0.50727\config\machine.config
[кастомный] сторонний machine.config или корневой web.config или applicationHost.config, до стороннего поставщика / клиента

Формат сохраняемости конфигурации — XML; Поэтому полезно описать сопоставления между подразделениями конфигурации и терминологией XML. Группы разделов и разделы — это XML-элементы. В разделе параметры организованы в небольших единицах, которые тесно соответствуют терминологии XML:

Единица конфигурации Терминология XML Описание
Конфигурационный элемент XML element Содержит другие дочерние единицы; не имеет значения.
Коллекция конфигураций XML element Частный случай элемента: содержит группу элементов в виде добавления/удаления/очистки.
Свойство конфигурации АТРИБУТ XML Содержит только значение; не содержит дочерних единиц.

Система конфигурации основана на декларативной схеме в своем ядре. Схема конфигурации охватывает несколько файлов, которые находятся в известном расположении: system32\inetsrv\config\schema. По умолчанию доступ к этой папке имеют только администраторы компьютеров. Клиенты или сторонние пользователи могут добавлять файлы схемы для пользовательских разделов, копируя их в этот каталог. Система конфигурации автоматически подбирает их при запуске в процессе конфигурации вызывающим объектом. Если система конфигурации уже запущена, она не будет учитывать изменения в файлах схемы или новые файлы.

Не изменяйте iis или другие файлы схемы, установленные в этом каталоге, так как ошибки могут привести к повреждению схемы и невозможности запуска сервера.

Замечание

Отсутствует высокоуровневый программный интерфейс для получения и задания файлов схемы, за исключением традиционного API доступа к файлам и синтаксического анализа и редактирования XML. Перед внесением изменений в нее всегда рекомендуется создавать резервные копии конфиденциальных состояний, таких как папка схемы.

Три файла составляют единую схему платформы веб-сервера:

  • IIS_schema.xml: охватывает систему активации Windows и настройки веб-сервера IIS, а также группы разделов.
  • ASPNET_schema.xml: охватывает параметры ASP.NET в группе разделов.
  • FX_schema.xml: охватывает другие параметры платформы .NET в различных группах разделов.

Вы также найдете FTP_schema.xml, если у вас установлена функция FTP IIS 7.