Конфигурирование и настройка Microsoft ASP.NET

       

Иерархическая модель настроек


Как говорилось в лекции 1, модель настроек ASP.NET наследует параметры от сервера к приложению при помощи иерархической модели. Благодаря иерархической модели можно указать параметры в файле machine.config или web.config родительского приложения, и эти параметры будут переданы во все дочерние приложения. Дочерние приложения наследуют настройки от родительских приложений, и все приложения наследуют настройки из файла machine.config. Вы можете указать параметры для всего сервера, одного или нескольких приложений, одной или нескольких директорий и даже одного файла. При наследовании настроечных параметров используются следующие правила.

  • Приложения сначала наследуют настройки из файла machine.config сервера, затем – из файла web.config родительского приложения и, наконец, из своего собственного файла web.config.
  • Параметры в каждом файле web.config переопределяют параметры из файлов machine.config и web.config, стоящих перед ним.
  • Наследование следует адресу URL запрошенного ресурса и не обязательно следует физической структуре файлов.
  • Параметры из файла machine.config или файла web.config родительского приложения могут запретить переопределение параметров.
  • С помощью установки расположения параметры могут относиться к конкретной директории, приложению или файлу.

Для наглядной демонстрации правил наследования давайте взглянем на сценарий, включающий несколько директорий и приложений. Для этого примера используются три приложения: App1, App2 и App3. На рисунке 2.1 показана виртуальная структура этих приложений.

Иерархическая модель настроек
Дополнительная информация. Виртуальная структура приложений – это структура, представленная при помощи инструмента администрирования IIS. Эта структура не связана с физическим расположением директорий и просто показывает, как вы настраиваете приложения в IIS.

Иерархическая модель настроек

Рис. 2.1.  Виртуальная структура приложений

На рисунке 2.1 App1 и App3 – это корневые приложения, а App2 – дочернее приложение App1.

Иерархическая модель настроек
Дополнительная информация. App3 в IIS представляет собой виртуальную директорию.
Виртуальная директория – это указатель из IIS на реальную физическую директорию на диске. Остальные приложения не являются виртуальными директориями, так как в физической структуре они находятся в одном и том же месте wwwroot, как и в виртуальной структуре.

Наследование в иерархической модели сначала берет во внимание виртуальную структуру, а затем – физическую структуру приложений. На рисунке 2.2 показана физическая структура приложений. Мы видим, что App1 – это поддиректория в директории wwwroot, а App2 и App3 –поддиректории App1. SubDir также является поддиректорией App1, но не является приложением или виртуальной директорией в IIS.

  1. Включите трассировку в файле machine.config на сервере, следуя шагам, описанным в разделе "Редактирование настроечных файлов" в лекции 1. Сделав это изменение, вы включите трассировку для всех приложений и файлов .aspx на этом сервере.
  2. Отключите трассировку в файле web.config для App1 – первого веб-приложения.


Иерархическая модель настроек

Рис. 2.2.  Физическая структура приложений

При доступе к указанным URL вы увидите следующие результаты. В этом примере в качестве имени сайта взято http://www.northwindtraders.com/. При тестировании замените его именем вашего сайта.

  • http://www.northwindtraders.com/App1. Этот URL наследует включенную трассировку из файла machine.config, но параметр в файле web.config для App1, отключающий ее, переопределяет данный параметр. Следовательно, для указанного URL трассировка отключена.
  • http://www.northwindtraders.com/App1/App2. App2 является в виртуальной структуре дочерним приложением App1, и трассировка здесь также отключена, поскольку App2 наследует файл web.config для App1, а в файле web.config для App2 переопределение этого параметра отсутствует.
  • http://www.northwindtraders.com/App1/SubDir. Для всех файлов в директории SubDir трассировка отключена, так как они наследуют этот параметр от файла web.config для App1.
  • http://www.northwindtraders.com/App3. Для App3 трассировка включена, так как оно наследует только от файла machine.config сервера.


    Хотя в физической структуре это приложение дочернее по отношению к App1, оно не является дочерним в виртуальной структуре.
  • http://www.northwindtraders.com/App1/App3. App3 – это самостоятельное приложение, но оно является поддиректорией App1 и доступ к нему может осуществляться по этому пути. В результате трассировка для App3 отключена, так как оно наследует данный параметр из файла web.config для App1.
Иерархическая модель настроек
Замечание. Заметили интересную особенность? Одна директория или приложение могут иметь несколько вариантов настроечных параметров в зависимости от того, по какому URL производится доступ к этому ресурсу.

URL ресурса определяет, какие настроечные параметры будет наследовать ресурс. Другими словами, одни и те же ресурсы наследуют различные настроечные параметры в зависимости от того, какой URL используется для доступа к ним. Поняв то, как настроечные параметры наследуются от сервера к приложениям, попробуем указать, к чему относятся настроечные параметры.


Содержание раздела