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

Важно!

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

Поставщик состояний сеанса кэша Microsoft Azure — это механизм хранения внепроцессного хранилища для ASP.NET приложений. Он позволяет хранить состояния сеансов в кэше, а не в памяти или базе данных SQL Server.

Пример кэширования состояния сеанса см. в примере кэширования состояния сеанса кэша и кэширования выходных данных.

Возможности

Поставщик состояний сеанса кэша Microsoft Azure имеет следующие улучшения за последние ASP.NET поставщики состояний сеансов:

  • Внутри он использует класс NetDataContractSerializer для сериализации состояния сеансов.

  • Он может публиковать состояния сеансов для разных приложений ASP.NET.

  • Он поддерживает одновременный доступ к одному набору состояний сеансов от нескольких читателей и одного писателя.

  • К ним можно применять функцию сжатия, доступную в свойствах клиента кэша.

Использование класса NetDataContractSerializer для сериализации способствует поддержке широкого диапазона типов, которые могут быть сериализованы. Сюда также относятся двоичные сериализуемые типы.

Поставщик поддерживает возможность одновременного считывания и записи одних и тех же данных о состоянии сеансов несколькими приложениями ASP.NET. Например, разработчик имеет два разных сайта ASP.NET: /contoso и /adventureworks. Поставщики состояний сеансов можно настроить в каждом веб-приложении так, чтобы они указывали на одно и то же хранилище состояний сеансов в кэше. В результате оба приложения будут считывать и записывать одни и те же данные сеанса для любого заданного идентификатора сеанса.

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

Добавление поставщика состояний сеансов в проект ASP.NET

  1. Сначала настройте кэш, который будет использоваться с поставщиком ASP.NET.

  2. Используйте NuGet, чтобы добавить поддержку кэширования в проект ASP.NET в Visual Studio.

    Важно!

    Для выполнения этих действий требуется последняя версия 2.6.40627.9000 диспетчера пакетов NuGet или более поздняя версия. Чтобы установить последнюю версию NuGet диспетчер пакетов, см. NuGet диспетчер пакетов.

  3. Удалите существующий элемент sessionState , который настраивает кэширование состояния сеанса. Не удаляйте раздел sessionState, добавленный пакетом NuGet.

  4. В файле web.config раскомментируйте раздел sessionState .

    <!-- 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>-->
    

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

  • Измените целевой именованный кэш с помощью атрибута cacheName элемента add .

  • Измените источник параметров клиента кэша с помощью атрибута dataCacheClientNameэлемента add . Присвойте этому атрибуту имя существующего раздела dataCacheClient в файле web.config.

  • Измените поведение клиента кэша, изменив параметры в соответствующем разделе dataCacheClient . Например, включите сжатие с помощью атрибута isCompressionEnabled .

    <dataCacheClient name="default" isCompressionEnabled="true">
      <!-- Other cache settings omitted -->
    </dataCacheClient>
    

    Список доступных параметров конфигурации см. в разделе "Конфигурация клиента кэша" Параметры для Azure управляемая служба кэша. Обратите внимание, что поставщики ASP.NET для кэширования не поддерживают типы двоичной или пользовательской сериализации. Если эти сериализаторы используются для состояния сеанса, возникает следующее исключение: "Type "Microsoft.Web.DistributedCache.SerializableSessionStateStoreData" в сборке "Microsoft.Web.DistributedCache, Version=101.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" не помечается как сериализуемый".

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

в этом разделе