Мой Kbyte.Ru
Рассылка Kbyte.Ru
Группы на Kbyte.Ru
Партнеры Kbyte.Ru
Сделано руками
Сделано руками
> Статьи - Алексей Немиро -

ASP .NET - Общие вопросы

Все статьи / Общие вопросы

Web.config – конфигурирование ASP .NET приложений

Автор: Алексей Немиро | добавлено: 02.03.2010, 22:51 | просмотров: 8771 (1+) | комментариев: 0 | рейтинг: *x3

Файл web.config служит для конфигурирования ASP .NET-приложений.

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

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

 

Файл web.config имеет удобную xml-структуру, его легко можно изменить (создать) в любом текстовом редакторе:

 

 

<configuration>

  <configSection>

    <!-- объявления обработчиков -->

  </configSection>

  <system.web>

    <!-- параметры конфигурирования ASP .NET -->

  </system.web>

  <system.net>

    <!-- параметры конфигурирования .NET Runtime -->

  </system.net>

</configuration>

 

 

Акцентирую ваше внимание на стиль написания дескрипторов. В элементах, состоящих из нескольких слов (например, configSection), первое слово пишется с маленькой буквы, а последующие с большой. Такой стиль называется «Верблюжьим стилем» (Camel casing) и в файлах конфигурирования является стандартом. Эти файлы чувствительны к регистру и отклонение от стиля приведет к нежелательным ошибкам.

 

Раздел конфигурирования находится внутри дескрипторов <configuration>. Между дескрипторами <configSection> находятся обработчики, которые обрабатывают XML-данные, хранящиеся в файле web.config, и выдают соответствующий этим данным объект. Если обработчики не определить, то ASP .NET ничего не будет знать о ваших данных конфигурирования. Например, если в обработчике не будет указан объект Page, то ASP .NET просто напросто не будет знать что такое Page и не сможет его обрабатывать. Но это не значит, что вам придется объявлять все необходимые для вашего приложения обработчики, в папке %WINDIR%\Microsoft.NET\Framework\%VER%\CONFIG* находится файл machine.config, который содержит много обработчиков и вам не придется их объявлять.

 

%WINDIR% - папка Windows (например, C:\WINNT)

%VER% - версия MS Framework .NET (например, v1.1.4322)

 

Между дескрипторами <system.net> находятся параметры конфигурирования системы .NET Runtime. Поскольку конфигурированием .NET Runtime вам, скорей всего, заниматься не придется, в данной статья я эту тему опущу.

 

Параметры конфигурирования непосредственно ASP .NET находятся между дескрипторами <system.web>. Вы можете определять любые свои группы параметров конфигурирования (разделы), но обычно, разделов, предлагаемых системой ASP .NET, вполне достаточно. Далее я более подробно расскажу об основных разделах конфигурирования.

 

<compilation>

 

Раздел <compilation> позволяет задать параметры компиляции приложения. В частности, можно установить язык используемый по умолчанию в приложении и определить параметры отладки приложения.

 

<compilation defaultLanguage="VB" debug="true" />

 

По умолчанию свойство debug = "false".

 

<globalization>

 

Раздел <globalization> позволяет настроить параметры глобализации приложения. В частности, здесь можно определить кодировку входящих и исходящих данных. По умолчанию установлена кодировка - utf-8.

 

<globalization requestEncoding="windows-1251" responseEncoding="windows-1251" />

 

<appSettings>

 

Пожалуй, <appSettings> является наиболее часто используемым разделом, поскольку в нем вы можете определять свои атрибуты, такие как, например, строки соединения с базой данных или заголовок окна браузера. Раздел <appSettings> имеет всего один элемент – add, который в свою очередь имеет два атрибута – key и value.

 

 

<configuration>

  <appSettings>

    <--! <add key=“Ключ” value=“Значение”/> -->

    <add key="MyTitle" value="Это мой заголовок окна"/>

    <add key="MyDBPath" value="А здесь находится путь к моей базе данных"/>

  </appSettings>

</configuration>

 

 

В отличии от других разделов, <appSettings> ASP .NET никак не обрабатывает и поэтому нахождение дескрипторов <appSettings> в разделе <system.web> не обязательно.

Чтобы получить указанные в <appSettings> данные, в данном случае MyTitle и/или MyDBPath, достаточно применить на ASP .NET странице свойство ConfigurationSettings.Appsettings:

 

 

Private Sub Page_Load (obj As Object, e As EventArgs)

  'Отправляем в браузер строку значение ключа MyDBPath

  Response.Write(ConfigurationSettings.AppSettings("MyDBPath"))

End Sub

 

 

Вот собственно и все. Думаю вы сумеете найти достойное применение <appSettings>.

 

<customErrors>

 

Не менее интересный раздел - <customErros>. Данный раздел позволяет указать страницу, на которую будет попадать пользователь при возникновении ошибки. Например, при возникновении 404 ошибки (Ресурс не найден), вместо стандартного сообщения об ошибке, вы можете вставить свою страницу с сообщением об ошибке. <customErrors> имеет два атрибута:

defaultRedirect – указывает страницу, на которую будет отправлен пользователь при возникновении ошибки.

mode – устанавливает режим вывода ошибок и может иметь три значения: on – включен, off – выключен и remote – показывать только удаленным пользователям.

 

Обработка ошибок производиться элементом error, который имеет два атрибута: statuscode и redirect. Как вы уже наверное догадались, statuscode – код ошибки, а redirect – страница, на которую будет перенаправлен пользователь при возникновении ошибки.

 

Для примера, ниже указанная конфигурация, при возникновении 404 ошибки (ресурс не найден) перенаправит пользователя на страницу error404.html, а в случае возникновения другой ошибки – на страницу error.html:

 

 

<configuration>

  <customError defaultRedirect="error.html" mode="on">

  <error statuscode="404" redirect="error404.html" />

  </customError>

</configuration>

 

 

При возникновении ошибки, на указанную в файле конфигурации страницу, также передается параметр aspxerrorpath, который содержит виртуальный путь к файлу вызвавшему ошибку и который можно обработать объектом Request.

 

Например, пользователь обращается к несуществующей странице: http://localhost/news.aspx и, соответственно, возникает ошибка 404 и пользователь перенаправляется по адресу: http://localhost/error404.html?aspxerrorpath=/news.aspx

 

<pages>

 

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

 

 

<configuration>

  <system.web>

    <pages buffer="true" />

  </system.web>

</configuration>

 

 

В данном примере, для всех страниц приложения включается буферизация страниц.

 

<sessionState>

 

<sessionState> позволяет установить параметры сессии и имеет следующие атрибуты:

- mode – указывает состояние сеанса, может иметь следующие значения: off – состояние сеанса отключено, inproc – информация о сеансе хранится локально (по умолчанию), stateserver – информация о сеансе хранится на другом сервере и sqlserver – информация о сеансе хранится в базе данных SQL Server.

- cookieless – значение true данного параметра позволяет отключить использование сессией cookies в приложении, при этом сеанс будет сохраняться в строке адреса url.

- timeout – максимальное время «жизни» сессии в режиме ожидания (по умолчанию 20 минут)

- connectionString – строка соединения, содержащая имя сервера и порт для хранения сессии. Используется только при значении mode=“stateserver”.

- sqlConnectionString – строка соединения с базой данных SQL Server. Используется только при значении mode=“sqlserver”.

 

Прочие разделы

 

Web.config имеет еще много разделов конфигурирования, я не буду подробно останавливаться на каждом из них, поскольку это тема не одной статьи. Ниже представлена таблица со всеми разделами конфигурирования файла web.config и кратким их описанием:

 

<appSettings>

позволяет хранить пользовательские (ваши) параметры приложения

<authorization>

позволяет настроить аутентификацию пользователей.

<authorization>

конфигурирует авторизацию ресурсов.

<browserCaps>

представляет возможности браузера пользователя.

<compilation>

конфигурирует параметры компиляции приложений.

<globalization>

конфигурирует параметры глобализации приложения.

<httpHandlers>

отвечает за передачу поступающих url классам IHttpHandler и IHttpHandlerFactory. Данные раздела <httpHandlerFactory> наследуются всеми подкаталогами.

<httpModules>

позволяет настроить HTTP-модули, находящиеся внутри приложения, которые участвуют в обработке каждого запроса, поступившего в приложение.

<identity>

управляет доступом к ресурсам ASP .NET.

<location>

определяет права доступа к указанному каталогу.

<processModel>

конфигурирует параметры модели обработки.

<sessionState>

устанавливает параметры сессии.

<trace>

позволяет настроить службы трассировки (отладки) системы ASP .NET.

<webServices>

конфигурирует параметры web-служб.

 

Помимо этого, как я уже ранее говорил, ASP .NET позволяет создавать собственные разделы конфигурирования, но об этом я постараюсь рассказать в следующий раз.

 

© Немиро Алексей, 14.08.2005

+ Добавить в избранное
    ? Помощь
Об авторе

Алексей Немиро

Интернет-деятель. Автор многочисленных статей и переводов статей по программированию и информационным технологиям. Работы Алексея можно найти в популярных печатных изданиях компьютерной тематики. Автор проекта Kbyte.Ru.
Сейчас Алексей занимается профессиональным Web-программированием на базе технологий .NET Framework. Иногда пишет различные программки и компоненты для Windows и Android. В свободное время занимается Web-дизайном, увлекается фото- и видеосъемкой.

См. также:
Профиль автора
Алексей Немиро
Последние комментарии (всего: 0)

Добавлять комментарии могут только зарегистрированные пользователи сайта.
Если у Вас уже есть учетная запись на Kbyte.Ru, пройдите процедуру авторизации OpenID.
Если Вы еще не зарегистрированы на Kbyte.Ru - зарегистрируйтесь.


Нет комментариев...

Авторизация
 
OpenID
Зарегистрируйся и получи 10% скидку на добавление своего сайта в каталоги! Подробнее »
Поиск по сайту
Люди на Kbyte.Ru
Реклама
Счетчики