Например, предположим, что вы хотите сохранить некоторые связанные параметры настройки, регулирующие связь с удаленным объектом, в ваших файлах web.config. Эти параметры настройки показывают информацию о местоположении, аутентификации пользователя и так далее. Хотя вы можете ввести эту информацию с помощью отдельных параметров настройки в группе <appSettings>, вы можете столкнуться с рядом проблем. Например, у вас не будет ничего, чтобы показать, какие параметры настройки являются логически связанными, что может привести к возникновению проблем, если один из них будет обновлен, а другой — нет.

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

<orderService avallable="true" pollTimeout="0:01:00"
  location="tcp://OrderComputer:8010/OrderService"/>

Как только вы создадите специальный элемент, нужно будет определить, что раздел использует элемент <section>. Этим вы зарегистрируете новый раздел и отобразите его на специальный класс данных (который впоследствии создадите). Если не выполнить этот шаг ASP.NET откажется запускать приложение, так как обнаружит нераспознанные разделы. Ниже показан весь необходимый файл web.config:

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
  <configSections>
    <section name="orderService" type="OrderService" />
  </configSections>
  <orderService available="true" pollTimeout="00:01:00"
    location="tcp://OrderComputer:8010/OrderService"/>
</configuration>

Затем потребуется определить класс, представляющий информацию, которую вы хотели бы извлечь. Этот класс должен быть порожден от System.Configuration.ConfigurationSection. Эту роль выполняет следующий класс OrderService. Он представляет один элемент <orderService> и предлагает три атрибута через строго типизированные свойства. Свойства отображаются на соответствующие имена атрибутов с помощью атрибута ConfigurationProperty. Они извлекаются из словаря в базовом классе через имя атрибута.

public class OrderService : ConfigurationSection
{
  [ConfigurationProperty("available", 
   DefaultValue = false)]
  public bool Available
  {
    get { return (bool)base["available"]; }
    set { base["available"] = value; }
  }

предыдущая    следующая страница   оглавление

230

Hosted by uCoz