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

Важно!

Корпорация Майкрософт рекомендует все новые разработки использовать кэш Redis для Azure. Текущая документация и рекомендации по выбору предложения кэша Azure см. в статье о том, какое предложение кэша Azure подходит для меня?

В этом разделе рассматриваются параметры конфигурации поставщика состояний сеансов Azure управляемая служба кэша для ASP.NET. Эти параметры указываются в разделе providers элемента sessionState в файле web.config.

Настройки конфигурации состояния сеанса

attribute Описание

name (обязательно)

Понятное имя поставщика, используемого элементом sessionState для ссылки на поставщик.

тип (обязательно)

Строка типа .NET Framework для поставщика. См. примечания ниже по выбору требуемого значения.

cacheName (обязательно)

Имя кэша Azure. Это должно быть присвоено объекту “default”.

dataCacheClientName (необязательно)

Имя раздела dataCacheClient , используемого из раздела конфигурации dataCacheClients . Этот атрибут требуется только в том случае, если в файле web.config указаны несколько разделов dataCacheClient . По умолчанию поставщик будет использовать раздел dataCacheClient с именем “default”.

applicationName (необязательно)

Строковое значение, используемое поставщиком при создании ключей кэша для хранения данных кэша вывода. Значением по умолчанию является пустая строка. Если этот атрибут не задан, поставщик использует значение HttpRuntime.AppDomainAppId как часть ключей кэша, которые он использует внутренне. В отличие от функции состояния сеансов вы не хотите предоставлять общий доступ к данным кэша вывода различным приложениям ASP.NET (например /contoso и /AdventureWorks не могут иметь общий доступ к данным кэша вывода). Вместо этого следует убедиться, что различные физические экземпляры того же приложения имеют доступ к тем же данным кэша вывода. Это можно сделать двумя способами.

  • Если атрибут поставщика applicationName не задан явным образом, httpRuntime.AppDomainAppId используется внутри поставщика при создании ключей кэша. Это значит, что каждый физический экземпляр одного и того же приложения (т. е. каждый веб-сервер, на котором размещено приложение /contoso) необходимо устанавливать в IIS с точно таким же путем к метабазе. Сведения https://support.microsoft.com/kb/325056о том, как используются пути метабазы с поставщиками состояний сеансов SQL Server и вне процесса. Хотя состояние сеанса отличается, существует та же проблема с синхронизацией путей метабазы. Это относится к кэшированию выходных данных, если атрибут applicationName не был задан в файле web.config.

  • Проще использовать каждый экземпляр одного приложения ASP.NET (например, на каждом веб-сервере, на котором размещено приложение /contoso), использовать один и тот же атрибут applicationName в файле web.config. В этом случае различные физические экземпляры одного и того же приложения могут считывать и записывать те же данные кэша вывода. В этом случае поставщик не использует AppDomainAppId при создании ключей кэша, поэтому нет риска несоответствия путей метабазы.

useBlobMode (необязательно)

Логическое значение, которое определяет, необходимо ли загружать и хранить данные состояния сеанса в качестве единого сериализованного BLOB-объекта. Данные атрибут в данном выпуске должен быть установлен как true, это значение по умолчанию. Использование значения false не поддерживается.

nonInlinedAdditionalLifetime (не поддерживается)

Данный атрибут не поддерживается в данном выпуске.

retryInterval (необязательно)

Период времени ожидания между повторными попытками в случае возникновения ошибки при связи с кэшем. Для этого значения используется следующий формат строки: "HH:MM:SS". По умолчанию поставщик в течение одной секунды будет находиться в режиме сна.

retryCount (необязательно)

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

inlinedKeys (не поддерживается)

Данный атрибут не поддерживается в данном выпуске.

maxInlinedStringLength (не поддерживается)

Данный атрибут не поддерживается в данном выпуске.

Примечание

Атрибут типа должен иметь значение “Microsoft.Web.DistributedCache.DistributedCacheOutputCacheProvider, Microsoft.Web.DistributedCache”.

Пример

<!-- Non-cache sections omitted for space -->
<configuration>
  <configSections>
    <section name="dataCacheClients" 
        type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core" 
        allowLocation="true" 
        allowDefinition="Everywhere" />
    <section name="cacheDiagnostics" 
        type="Microsoft.ApplicationServer.Caching.AzureCommon.DiagnosticsConfigurationSection, Microsoft.ApplicationServer.Caching.AzureCommon" 
        allowLocation="true" 
        allowDefinition="Everywhere" />
  </configSections>
  <system.web>
    <!-- Azure Caching session state provider -->
    <sessionState mode="Custom" customProvider="AFCacheSessionStateProvider">
      <providers>
        <add name="AFCacheSessionStateProvider" 
            type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache" 
            cacheName="default" 
            dataCacheClientName="default" 
            applicationName="AFCacheSessionState"/>
      </providers>
    </sessionState>
  </system.web>
  <dataCacheClients>
    <dataCacheClient name="default">
      <!--To use the in-role flavor of Azure Caching, set identifier to be the cache cluster role name -->
      <!--To use the Azure Caching Service, set identifier to be the endpoint of the cache cluster -->
      <autoDiscover
        isEnabled="true" 
        identifier="[Cache role name or Service Endpoint]" />
      <!--<localCache isEnabled="true" sync="TimeoutBased" objectCount="100000" ttlValue="300" />-->
      <!--Use this section to specify security settings for connecting to your cache. 
          This section is not required if your cache is hosted on a role that is a part 
          of your cloud service. -->
      <!--<securityProperties mode="Message" sslEnabled="false">
        <messageSecurity authorizationInfo="[Authentication Key]" />
      </securityProperties>-->
    </dataCacheClient>
    <cacheDiagnostics>
      <crashDump dumpLevel="Off" dumpStorageQuotaInMB="100" />
    </cacheDiagnostics>
  </dataCacheClients>
</configuration>

Примечание

Пакет NuGet кэша добавляет раздел cacheDiagnostics только в клиенты веб-роли ASP.NET. Дополнительные сведения см. в статье о ClientDiagnosticLevel для Azure управляемая служба кэша.

См. также:

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

Поставщик состояния сеансов для управляемой службы кэша Azure