Спонсор: Microsoft
Опубликован: 24.05.2010 | Уровень: специалист | Доступ: платный
Самостоятельная работа 5:

Работа с конфигурационными данными

< Самостоятельная работа 4 || Самостоятельная работа 5: 12 || Лекция 9 >
Аннотация: В рамках данного практического занятия вы ознакомитесь с понятием конфигурационных файлов, их структурой и назначением.

Основны

Все приложения .NET Framework наследуют базовые параметры конфигурации и параметры по умолчанию от файла systemroot\Microsoft\.NET\Framework\номер_версии\CONFIG\Machine.config. Файл Machine.config содержит параметры конфигурации на стороне сервера. Некоторые из этих параметров не могут быть переопределены файлами конфигурации, находящимися ниже в иерархии.

Machine.config - Содержит настройки всего сервера. Настройки, находящиеся в файле Machine.config, наследуются всеми остальными файлами конфигурации .NET, включая файлы конфигурации IIS.

Клиентские приложения .NET (консольные приложения и приложения Windows) используют файл конфигурации имя_приложения.config для переопределения унаследованных параметров. Приложения ASP.NET для переопределения унаследованных параметров используют файлы конфигурации Web.config.

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

Web.config (корневой уровень) - Позволяет определять настройки для отдельных веб-узлов, веб-приложений или виртуальных и физических каталогов. Этот файл можно хранить в том же каталоге, что и код или содержимое.

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

Web.config (уровень приложений) - Позволяет определять настройки для отдельных веб-узлов, веб-приложений или виртуальных и физических каталогов. Этот файл можно хранить в том же каталоге, что и код или содержимое.

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

уровни расположения файла в иерархии конфигурации

Уровень конфигурации Имя файла Описание файла
Сервер Machine.config Файл Machine.config содержит схему ASP.NET для всех веб-приложений сервера. Этот файл находится в верхней части иерархии слияния конфигураций.
Корневой файл Web.config Серверный файл Web.config хранится в том же каталоге, что и файл Machine.config и содержит значения по умолчанию для большинства сценариев конфигурации system.web. Во время выполнения слияние этого файла осуществляется вторым с начала в иерархии конфигурации.
Веб-узел Файл Web.config Файл Web.config определенного веб-узла содержит параметры, относящиеся к веб-узлу и наследующиеся в нижнем направлении для всех приложений ASP.NET и вложенных папок узла.
Корневой каталог приложения ASP.NET Файл Web.config Файл Web.config определенного приложения ASP.NET расположен в корневом каталоге приложения и содержит параметры, относящиеся к веб-узлу и наследующиеся в нижнем направлении для всех вложенных папок ветви.
Вложенная папка приложения ASP.NET Файл Web.config Файл Web.config определенной вложенной папки приложения содержит параметры, относящиеся к данной вложенной папке и наследующиеся в нижнем направлении для всех вложенных папок ветви.
Каталог клиентского приложения Название_файла.config Файл Название_файла.config содержит параметры клиентского приложения Windows (не веб-приложения).

Обработка конфигурационных файлов

При первом запуске веб-приложения исполняющая среда создает кэш действующих параметров веб-приложения, объединив параметры из разных конфигурационных файлов следующим образом:

  1. Сначала извлекаются параметры из файла Machine.config.
  2. В кэш добавляются параметры из корневого файла Web.config, переопределяющие ранее кэшированные параметры из файла Machine.config.
  3. Если в корневом каталоге веб-сайта есть файл Web.config, параметры из него заносятся в кэш, переопределяя ранее кэшированные одноименные параметры.
  4. Если веб-приложение имеет собственный файл Web.config, параметры из него также добавляются в кэш, переопределяя ранее кэшированные параметры. В итоге кэш заполняется параметрами, применяемыми к веб-сайту.
  5. Если веб-приложение имеет подкаталоги, в них также могут входить файлы Web.conifg, содержащие параметры, специфичные для файлов и папок отдельного подкаталога. Для определения действующих параметров папки сначала читаются параметры веб-сайта (шаги 1—4), затем в кэш добавляются параметры из файла Web.config, расположенного в этой папке, которые и определяют окончательные параметры.

Редактирование конфигурационных файлов

Так как файлы конфигурации являются файлами XML, их можно открывать и редактировать с помощью любого текстового или XML-редактора. Допустимо также использовать оснастку .NET Framework 2.0 Configuration для консоли Microsoft Management Console (MMC), предоставляющую графический интерфейс для изменения некоторых параметров конфигурации, нужных администраторам.

Кроме того, в Visual Studio 2005 имеется утилита Web Site Administration, позволяющая изменять многие параметры конфигурационных файлов. Чтобы запустить ее, выберите команду меню Website | ASP.NET Configuration.


Утилита Web Site Administration позволяет редактировать конфигурационные файлы следующих категорий:

  • Security

    Эти параметры помогают настраивать параметры безопасности веб-сайта. Сюда можно добавлять пользователей, роли и разрешения на доступ к веб-сайту.

  • Application Configuration

    Данная категория используется для изменения параметров приложения. Provider Configuration

Редактировать конфигурационные файлы можно и вручную, выбрав их в обозревателе решений (Solution Explorer)


Пример файла web.config, сформированного при создании нового веб - узла средствами Visual Studio:

<?xml version="1.0"?>
<configuration>
  <configSections>
    <sectionGroup name="system.web.extensions"        
                  type="System.Web.Configuration.SystemWebExtensionsSectionGroup, 
                         System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, 
                         PublicKeyToken=31bf3856ad364e35">
      <sectionGroup name="scripting"           
                    type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, 
                            Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
        <section name="scriptResourceHandler" 
                 type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, 
                        System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, 
                        PublicKeyToken=31bf3856ad364e35" requirePermission="false" 
                 allowDefinition="MachineToApplication"/>
        <sectionGroup name="webServices" 
                      type="System.Web.Configuration.ScriptingWebServicesSectionGroup, 
                             System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, 
                             PublicKeyToken=31bf3856ad364e35">
          <section name="jsonSerialization" 
          type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, 
          Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
          requirePermission="false" allowDefinition="Everywhere"/>
          <section name="profileService" 
                   type="System.Web.Configuration.ScriptingProfileServiceSection, 
                           System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, 
                           PublicKeyToken=31bf3856ad364e35" 
                   requirePermission="false" allowDefinition="MachineToApplication"/>
          <section name="authenticationService" 
                   type="System.Web.Configuration.ScriptingAuthenticationServiceSection, 
                          System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, 
                          PublicKeyToken=31bf3856ad364e35" 
                   requirePermission="false" allowDefinition="MachineToApplication"/>
        </sectionGroup>
      </sectionGroup>
    </sectionGroup>
  </configSections>
  <system.web>
    <pages>
      <controls>
        <add tagPrefix="asp" namespace="System.Web.UI"  
             assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, 
             PublicKeyToken=31bf3856ad364e35"/>
      </controls>
    </pages>
    <compilation debug="true">
      <assemblies>
        <add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,  
                           PublicKeyToken=31bf3856ad364e35"/>
      </assemblies>
    </compilation>
    <httpHandlers>
      <remove verb="*" path="*.asmx"/>
      <add verb="*" path="*.asmx" validate="false" 
           type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, 
           Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <add verb="*" path="*_AppService.axd" validate="false" 
           type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, 
           Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <add verb="GET,HEAD" path="ScriptResource.axd" 
           type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, 
                  Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
           validate="false"/>
    </httpHandlers>
    <httpModules>
      <add name="ScriptModule" 
           type="System.Web.Handlers.ScriptModule, System.Web.Extensions, 
                  Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    </httpModules>
  </system.web>
  <system.web.extensions>
    <scripting>
      <webServices>
      </webServices>

    </scripting>
  </system.web.extensions>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules>
      <add name="ScriptModule" preCondition="integratedMode" 
           type="System.Web.Handlers.ScriptModule, System.Web.Extensions, 
                  Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    </modules>
    <handlers>
      <remove name="WebServiceHandlerFactory-Integrated"/>
      <add name="ScriptHandlerFactory" verb="*" path="*.asmx" 
           preCondition="integratedMode" 
           type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, 
                  Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" 
           preCondition="integratedMode" 
           type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, 
                  Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <add name="ScriptResource" preCondition="integratedMode" 
           verb="GET,HEAD" path="ScriptResource.axd" 
           type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, 
                  Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    </handlers>
  </system.webServer>
</configuration>

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

< Самостоятельная работа 4 || Самостоятельная работа 5: 12 || Лекция 9 >
Екатерина Соколова
Екатерина Соколова
Россия, Ухта
Никита Гекторов
Никита Гекторов
Украина, Донецк