Учебники

ASP.NET — Конфигурация

На поведение приложения ASP.NET влияют различные параметры в файлах конфигурации:

  • machine.config
  • web.config

Файл machine.config содержит значение по умолчанию и машинное значение для всех поддерживаемых настроек. Настройки аппарата контролируются системным администратором, и приложениям, как правило, не предоставляется доступ к этому файлу.

Однако приложение может переопределить значения по умолчанию, создав файлы web.config в своей корневой папке. Файл web.config является подмножеством файла machine.config.

Если приложение содержит дочерние каталоги, оно может определить файл web.config для каждой папки. Объем каждого файла конфигурации определяется иерархическим способом сверху вниз.

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

Visual Studio генерирует файл web.config по умолчанию для каждого проекта. Приложение может выполняться без файла web.config, однако вы не можете отлаживать приложение без файла web.config.

На следующем рисунке показан Solution Explorer для примера примера, используемого в руководстве по веб-сервисам:

Solution Explorer-2

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

Файл web.config имеет элемент конфигурации в качестве корневого узла. Информация внутри этого элемента сгруппирована в две основные области: область объявления секции-обработчика конфигурации и область настроек секции конфигурации.

Следующий фрагмент кода показывает основной синтаксис файла конфигурации:

<configuration>

   <!-- Configuration section-handler declaration area. -->
      <configSections>
         <section name="section1" type="section1Handler" />
         <section name="section2" type="section2Handler" />
      </configSections>
   <!-- Configuration section settings area. -->
   
   <section1>
      <s1Setting1 attribute1="attr1" />
   </section1>
   
   <section2>
      <s2Setting1 attribute1="attr1" />
   </section2>
   
   <system.web>
      <authentication mode="Windows" />
   </system.web>
   
</configuration>

Объявления обработчика раздела конфигурации

Обработчики раздела конфигурации содержатся в тегах <configSections>. Каждый обработчик конфигурации указывает имя раздела конфигурации, содержащегося в файле, который предоставляет некоторые данные конфигурации. Он имеет следующий основной синтаксис:

<configSections>
   <section />
   <sectionGroup />
   <remove />
   <clear/>
</configSections>

Он имеет следующие элементы:

  • Очистить — удаляет все ссылки на унаследованные разделы и группы разделов.

  • Удалить — удаляет ссылку на унаследованный раздел и группу разделов.

  • Раздел — определяет связь между обработчиком раздела конфигурации и элементом конфигурации.

  • Группа разделов — определяет связь между обработчиком раздела конфигурации и разделом конфигурации.

Очистить — удаляет все ссылки на унаследованные разделы и группы разделов.

Удалить — удаляет ссылку на унаследованный раздел и группу разделов.

Раздел — определяет связь между обработчиком раздела конфигурации и элементом конфигурации.

Группа разделов — определяет связь между обработчиком раздела конфигурации и разделом конфигурации.

Настройки приложения

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

<configuration>
   <appSettings>
      <add key="Application Name" value="MyApplication" /> 
   </appSettings>
</configuration>

Например, вы также можете сохранить название книги и ее номер ISBN:

<configuration>
   <appSettings>
      <add key="appISBN" value="0-273-68726-3" />
      <add key="appBook" value="Corporate Finance" />
   </appSettings>
</configuration>

Строки подключения

Строки подключения показывают, какие строки подключения к базе данных доступны для веб-сайта. Например:

<connectionStrings>
   <add name="ASPDotNetStepByStepConnectionString" 
      connectionString="Provider=Microsoft.Jet.OLEDB.4.0;
      Data Source=E:\\projects\datacaching\ /
      datacaching\App_Data\ASPDotNetStepByStep.mdb"
      providerName="System.Data.OleDb" />
      
   <add name="booksConnectionString" 
      connectionString="Provider=Microsoft.Jet.OLEDB.4.0;
      Data Source=C:\ \databinding\App_Data\books.mdb"
      providerName="System.Data.OleDb" />
</connectionStrings>

System.Web Element

Элемент system.web указывает корневой элемент для раздела конфигурации ASP.NET и содержит элементы конфигурации, которые настраивают веб-приложения ASP.NET и управляют поведением приложений.

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

<system.web> 
   <anonymousIdentification> 
   <authentication> 
   <authorization> 
   <browserCaps> 
   <caching> 
   <clientTarget> 
   <compilation> 
   <customErrors> 
   <deployment> 
   <deviceFilters> 
   <globalization> 
   <healthMonitoring> 
   <hostingEnvironment> 
   <httpCookies> 
   <httpHandlers> 
   <httpModules> 
   <httpRuntime> 
   <identity> 
   <machineKey> 
   <membership> 
   <mobileControls> 
   <pages> 
   <processModel> 
   <profile> 
   <roleManager> 
   <securityPolicy> 
   <sessionPageState> 
   <sessionState> 
   <siteMap> 
   <trace> 
   <trust> 
   <urlMappings> 
   <webControls> 
   <webParts> 
   <webServices> 
   <xhtmlConformance> 
</system.web>

В следующей таблице приведено краткое описание некоторых общих подэлементов элемента system.web :

AnonymousIdentification

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

Аутентификация

Он настраивает поддержку аутентификации. Основной синтаксис такой:

<authentication mode="[Windows|Forms|Passport|None]"> 
   <forms>...</forms>
   <passport/>
</authentication>

авторизация

Настраивает поддержку авторизации. Основной синтаксис такой:

<authorization> 
   <allow .../>
   <deny .../>
</authorization>

Кэширование

Конфигурирует настройки кеша. Основной синтаксис такой:

<caching>
   <cache>...</cache>
   <outputCache>...</outputCache>
   <outputCacheSettings>...</outputCacheSettings>
   <sqlCacheDependency>...</sqlCacheDependency>
</caching>

CustomErrors

Он определяет пользовательские сообщения об ошибках. Основной синтаксис такой:

<customErrors defaultRedirect="url" mode="On|Off|RemoteOnly">
   <error. . ./>
</customErrors>

развертывание

Он определяет параметры конфигурации, используемые для развертывания. Основной синтаксис выглядит следующим образом:

<deployment retail="true|false" />

HostingEnvironment

Он определяет параметры конфигурации для среды хостинга. Основной синтаксис выглядит следующим образом:

<hostingEnvironment idleTimeout="HH:MM:SS" shadowCopyBinAssemblies="true|false" 
   shutdownTimeout="number" urlMetadataSlidingExpiration="HH:MM:SS" />

тождественность

Он настраивает личность приложения. Основной синтаксис такой:

<identity impersonate="true|false" userName="domain\username"
   password="<secure password>"/>

MachineKey

Он настраивает ключи, используемые для шифрования и дешифрования данных cookie проверки подлинности с помощью форм.

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

<machineKey validationKey="AutoGenerate,IsolateApps" [String]
   decryptionKey="AutoGenerate,IsolateApps" [String]
   validation="HMACSHA256" [SHA1 | MD5 | 3DES | AES | HMACSHA256 | 
   HMACSHA384 | HMACSHA512 | alg:algorithm_name]
   decryption="Auto" [Auto | DES | 3DES | AES | alg:algorithm_name]
/>

членство

Это настраивает параметры управления и аутентификации учетных записей пользователей. Основной синтаксис:

<membership defaultProvider="provider name"
   userIsOnlineTimeWindow="number of minutes" hashAlgorithmType="SHA1">
   <providers>...</providers>
</membership>

страницы

Это обеспечивает специфичные для страницы конфигурации. Основной синтаксис:

<pages asyncTimeout="number" autoEventWireup="[True|False]"
      buffer="[True|False]" clientIDMode="[AutoID|Predictable|Static]"
      compilationMode="[Always|Auto|Never]" 
      controlRenderingCompatibilityVersion="[3.5|4.0]"
      enableEventValidation="[True|False]"
      enableSessionState="[True|False|ReadOnly]"
      enableViewState="[True|False]"
      enableViewStateMac="[True|False]"
      maintainScrollPositionOnPostBack="[True|False]" 
      masterPageFile="file path" 
      maxPageStateFieldLength="number" 
      pageBaseType="typename, assembly"
      pageParserFilterType="string" 
      smartNavigation="[True|False]"
      styleSheetTheme="string"
      theme="string"
      userControlBaseType="typename"
      validateRequest="[True|False]"
      viewStateEncryptionMode="[Always|Auto|Never]" >
   
   <controls>...</controls>
   <namespaces>...</namespaces>
   <tagMapping>...</tagMapping>
   <ignoreDeviceFilters>...</ignoreDeviceFilters>
</pages>

Профиль

Он настраивает параметры профиля пользователя. Основной синтаксис:

<profile enabled="true|false" inherits="fully qualified type reference"
   automaticSaveEnabled="true|false" defaultProvider="provider name">
   
   <properties>...</properties>
   <providers>...</providers>
   
</profile>

RoleManager

Он настраивает параметры для пользовательских ролей. Основной синтаксис:

<roleManager cacheRolesInCookie="true|false" cookieName="name"
   cookiePath="/" cookieProtection="All|Encryption|Validation|None"
   cookieRequireSSL="true|false " cookieSlidingExpiration="true|false "
   cookieTimeout="number of minutes" createPersistentCookie="true|false"
   defaultProvider="provider name" domain="cookie domain"> 
   enabled="true|false"
   maxCachedResults="maximum number of role names cached"
   
   <providers>...</providers>
</roleManager>

Политика безопасности

Он настраивает политику безопасности. Основной синтаксис:

<securityPolicy>
   <trustLevel />
</securityPolicy>

UrlMappings

Он определяет сопоставления, чтобы скрыть исходный URL-адрес и предоставить более удобный для пользователя URL-адрес. Основной синтаксис:

<urlMappings enabled="true|false">
   <add.../>
   <clear />
   <remove.../>
</urlMappings>

WebControls

Он предоставляет имя общего расположения для клиентских скриптов. Основной синтаксис:

<webControls clientScriptsLocation="String" />

WebServices

Это настраивает веб-сервисы.