Конфигурирование и настройка 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 используется для доступа к ним. Поняв то, как настроечные параметры наследуются от сервера к приложениям, попробуем указать, к чему относятся настроечные параметры.


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