Автор: Команда dotSite
Источник: dotSite
Если вы более или менее внимательно изучали ASP.NET, то безусловно встречали
название config.web. Более того, не сложно догадаться, для чего он нужен - для
конфигурирования приложения. Однако более подробно о действии установок файла,
его структуре и возможном составе складывается противоречивое впечатление. Здесь
мы опишем возможности и правила применения config.web.
Для начала заметим, что какой-либо из файлов config.web всегда применяется к
asp.net приложению. Разница заключается лишь в том, какой из существующих
система будет использовать. При установке dotNET создается конфигурационный файл
по умолчанию, который и будет применяться, если не указан конкретный config.web.
Поясним, как система определяет местопоожение конфига и в какой
последовательности она просматривает каталоги.
Итак, при запуске Вашего
приложения система начинает поиск.Сначала просматривается тот виртуальнй
каталог, где находится приложение. Если файл не обнаружен, то система будет
обследовать все виртуальные директории, содержащие текущий. Интересно, но то же
самое произойдет и в случае обнаружения файла. Это довольно удобно, так как в
случае большого приложения можно задатьобщие настройки (например, в ...\my
APP\), а затем уточнять их и расширять для более мелких частей (директории вида
...\my APP\Concrete Part\).Файлы, находящиеся ниже в дереве каталогов
переопределяют параметры, указанный в конфигурационных файлах более высокого
уровня.. Наконец, последний файл, который будет просмотрен находится в папке
WinNT\Microsoft.NET\Framework\<version>\config.web.
Теперь поговорим о формате конфигурационного файла. Как и почти все текстовые
файлы в dotNET конфиг имеет XML синтакс и должен быть легко читаем человеком.
Понятно, что, благодаря XML, как простота работы, так и удобство программной
обработки будут обеспечены.
Вся информация размещается между парой тегов
<configuration> Внутри этих тегов находятся две глобальные части. Первая задается внутри
тега <configsections> и указывает, какие
параметры будут определены в данном конфигурационном файле. Здсь же указывается,
какие классы несут ответсвенность за обработку этих параметров. Приведем
пример:
<add names="globalization"
type="System.Web.Config.GlobalizationConfigHandler"/>
Здесь определяется секция globalization и обработчик для нее. Для
ограниченного набора частей config.web, считающихся стандартными, соответствющие
обработчики уже прописаны в "системном" config.web и будут унаследованы во всех
остальных файлах. Если же вы определяете собственные значения, то для их
обработки рекомендуется использовать System.Web.Configuration.DictionarySectionHandler.
С помощью этого класса будете получать хзш таблицу, где будут храниться
все требуемые пары имя/значение. Возможность добавлять нестандартные секции в
конфигурационный файл позволяет хранить там необходимую статическую информцию,
такую как строки соединений с базой данных или необходимые URL. Пример (взят из
документации Microsoft):
<configuration>
<configsections>
<add name="databases" type=_
"System.Web.Configuration.DictionarySectionHandler"/>
</configsections>
<databases>
<addkey="pubs" value="server=localhost;uid=_
sa;pwd=;database=pubs"/>
<addkey="northwind" value="server=localhost;uid=_
sa;pwd=;database=pubs"/>
</databases>
</configuration>
|
Здесь определена секция databases, не являющаяся стандартной. Я упомянул про
стандартную часть config.web. Она включает следующие секции:
<httpmodules> |
Отвечает за конфигурирование html модулей внутри приложения. |
<httphandlers> |
Отвечает за связывание входящих запросов с IHttpHandler классами.
Важно, что поддиректории не наследуют эти установки. Еще одна задача -
связывание URL с классом IHttpHandlerFactory. Данные, представленные в
<httphandlerfactories> наследуются в под директориях. |
<sessionstate> |
Отвечаетза конфигурирование состояния сессии HttpModule. |
<globalization> |
Отвечает за глобализационные установки приложения. |
<compilation> |
Отвечает за все, свяанное с компиляцией приложений.. |
<trace> |
Отвечает зы настройку отладочных служб ASP.NET.. |
<security> |
Отвечает за настройки, связанные с безопасностью приложений. |
<iisprocessmodel> |
Отвечает за настройку ASP.NET на IIS Web Server Systems. |
<browsercaps> |
Отвечает за настройку компонента, определяющего возможности
броузера... |
Последнее, о чем мы еще не поговорили - как получать значения, хранящиеся в
config.web программно. Здесь все очень просто. Все что надо - вызвать GetConfig
класса System.Web.HttpContext. На что следует обратить внимание, так зто
возвращаемое при этом значение. Оно зависит от сопоставленного обработчика, а
потому надо знать, к какому типу привести полученный результат.
Источник: dotSite