Настройка поставщика состояний сеансов ASP.NET (кэширование в Windows Server AppFabric)

В Windows Server AppFabric имеется настраиваемых поставщик состояний сеансов для веб-приложений ASP.NET. Он позволяет создавать веб-приложения, объекты сеансов которых будут действовать по всему кластеру кэша, что помогает повысить масштабируемость. В силу структуры компонентов кэширования в AppFabric объекты, помещаемые в сеанс, должны быть сериализуемыми.

Процедуры в этом разделе предполагают, что уже подготовлена среда разработки веб-приложения, заданы ссылки на сборки кэширования AppFabric и так далее. Дополнительные сведения см. в разделе Подготовка среды разработки клиента кэша (кэширование в Windows Server AppFabric).

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

  • configSections: этот элемент должен стоять первым в файле конфигурации сразу после открывающего тега configuration. Он необходим для работы сборок кэширования AppFabric.

  • dataCacheClient: данный элемент является дочерним по отношению к элементу «configuration». Он используется для настройки клиента кэша и указания узлов кэша. Дополнительные сведения о клиенте кэша см. в разделе Разработка клиента кэша (кэширование в Windows Server AppFabric).

  • sessionState: данный элемент является дочерним по отношению к элементу «system.web». Он указывает, что веб-приложение должно использовать AppFabric для управления состояниями сеансов. Атрибут cacheName задает используемый для этого именованный кэш. Если данные сеансов хранятся в области кэша, используйте для ее указания атрибут regionName.

Примечание

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

Предупреждение

Настоятельно рекомендуется обеспечить безопасность файла web.config, используемого для задания имен узлов кэша.

Настройка поставщика состояний сеансов AppFabric для веб-приложения

  1. Скопируйте элемент configSections из приведенного в конце статьи примера в свой файл web.config. Этот элемент должен быть первым среди всех элементов в тегах configuration.

  2. Скопируйте элемент dataCacheClient из приведенного в конце статьи примера в свой файл web.config. Он должен стоять после элемента configSections внутри элемента configuration.

    1. Настройте атрибуты name и cachePort в элементах узлов в соответствии с конфигурацией серверов кэша в конкретной среде. При необходимости можно добавлять и удалять элементы узлов.
  3. Скопируйте элемент sessionState из приведенного в конце статьи примера в свой файл web.config. Его следует поместить внутрь элемента system.web.

  4. Определите удостоверение веб-приложения. Это можно сделать в диспетчере IIS на веб-серверах. Посмотрите на удостоверение пула приложений, связанного с веб-приложением. Предоставьте этот пользовательский доступ кластеру кэша с помощью команды Grant-CacheAllowedClientAccount Windows Powershell.

    Совет

    Если пул приложений запускается как встроенная учетная запись компьютера, такая как «NT Authority\Network Service», то следует предоставить доступ к кластеру кэша для этого компьютера. Это можно сделать, указав в качестве учетной записи DOMAINNAME\MACHINENAME$. Следует отметить, что «$» добавляется к имени компьютера, чтобы указать, что это учетная запись компьютера.

Пример

В этом примере демонстрируется настройка веб-приложения ASP.NET с использованием клиента кэша для сохранения данных сеансов в распределенном кэше NamedCache1. Клиент кэша в этом примере настроен так, чтобы взаимодействовать только с одним узлом кэша — CacheServer1.

Сначала добавьте элемент configSections в файл web.config, сделав его первым элементом в элементе configuration:

<!--configSections must be the FIRST element -->
<configSections>
   <!-- required to read the <dataCacheClient> element -->
   <section name="dataCacheClient"
         type="Microsoft.ApplicationServer.Caching.DataCacheClientSection,
            Microsoft.ApplicationServer.Caching.Core, Version=1.0.0.0, 
            Culture=neutral, PublicKeyToken=31bf3856ad364e35"
         allowLocation="true"
         allowDefinition="Everywhere"/>
</configSections>

Затем добавьте элемент dataCacheClient в файл web.config, поставив его после элемента configSections. Именно здесь клиент кэша можно настроить в соответствии с потребностями конкретного приложения. Дополнительные сведения см. в разделе Параметры конфигурации приложения (кэширование в Windows Server AppFabric).

<!-- cache client -->
<dataCacheClient> 
  <!-- cache host(s) -->
  <hosts>
    <host
       name="CacheServer1"
       cachePort="22233"/>
  </hosts>
</dataCacheClient>

После добавления элементов configSections и dataCacheClient добавьте элемент sessionState в файл web.config, расположив его внутри элемента system.web. Здесь можно указать кэш, который веб-приложение будет использовать для хранения данных о состоянии сеансов.

Обратите внимание, что в ситуации, если одно и то же состояние сеанса должно использоваться в нескольких веб-приложениях, то все они должны использовать одно и то же значение атрибута sharedId. В противном случае не требуется указывать атрибут sharedId.

<sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider">
  <providers>
    <!-- specify the named cache for session data -->
    <add 
      name="AppFabricCacheSessionStoreProvider" 
      type="Microsoft.ApplicationServer.Caching.DataCacheSessionStoreProvider" 
      cacheName="NamedCache1"
      sharedId="SharedApp"/>
  </providers>
</sessionState>

После выполнения всех действий итоговый файл web.config веб-приложения будет похож на следующий пример.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  
  <!--configSections must be the FIRST element -->
  <configSections>
     <!-- required to read the <dataCacheClient> element -->
     <section name="dataCacheClient"
         type="Microsoft.ApplicationServer.Caching.DataCacheClientSection,
            Microsoft.ApplicationServer.Caching.Core, Version=1.0.0.0, 
            Culture=neutral, PublicKeyToken=31bf3856ad364e35"
         allowLocation="true"
         allowDefinition="Everywhere"/>
  </configSections>
  
  <!-- cache client -->
  <dataCacheClient>    
    <!-- cache host(s) -->
    <hosts>
      <host
         name="CacheServer1"
         cachePort="22233"/>
    </hosts>
  </dataCacheClient>

  <system.web>
    <sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider">
      <providers>
        <!-- specify the named cache for session data -->
        <add 
          name="AppFabricCacheSessionStoreProvider" 
          type="Microsoft.ApplicationServer.Caching.DataCacheSessionStoreProvider" 
          cacheName="NamedCache1"
          sharedId="SharedApp"/>
      </providers>
    </sessionState>
  </system.web>
</configuration>

См. также

Основные понятия

Начало работы с клиентом кэша Windows Server AppFabric (XML)
Использование методов настройки (кэширование в Windows Server AppFabric)
Основные принципы кэширования Windows Server AppFabric
Разработка клиента кэша (кэширование в Windows Server AppFabric)

  2011-12-05