Azure Redis 缓存的 ASP.NET 会话状态提供程序

Azure Redis Cache 提供了一个会话状态提供程序,你可以使用其在缓存中(而不是内存中或在 SQL Server 数据库中)存储会话状态。要使用缓存会话状态提供程序,先首先配置缓存,然后使用 Redis 缓存会话状态 NuGet 包配置用于缓存的 ASP.NET 应用程序。

  1. 若要使用 Redis Cache Session State NuGet 程序包配置 Visual Studio 中的应用程序,请右键单击解决方案资源管理器中的项目,然后选择管理 NuGet 程序包

    Azure Redis Cache:管理 NuGet 包
  2.  RedisSessionStateProvider 键入联机搜索文本框中,从结果中选择,单击安装

    Azure Redis Cache 会话状态提供程序
    note备注
    Redis Session State Provider NuGet 程序包对 StackExchange.Redis.StrongName 程序包有依赖。如果 StackExchange.Redis.StrongName 程序包未在项目中显示,其将安装。请注意,除具有强名称 StackExchange.Redis.StrongName 程序包,还有 StackExchange.Redis 非强名称版本。如果你的项目使用非强命名 StackExchange redis 版本,在安装 Redis Session State Provider NuGet 程序包前后,你必须将其卸载,否则你将获取与项目中冲突的名称。有关这些程序包的更多信息,请参阅 配置 Azure Redis Cache 的 .NET 缓存客户端

     

     


    NuGet 程序包下载并添加所需的程序集引用,然后添加以下会话到 web.config 文件,该文件包含 ASP.NET 应用程序所需的配置以使用 Redis Cache 会话状态提供程序。

     
      <sessionState mode="Custom" customProvider="MySessionStateStore">
          <providers>
            <!--
              <add name="MySessionStateStore" 
                host = "127.0.0.1" [String]
                port = "" [number]
                accessKey = "" [String]
                ssl = "false" [true|false]
                throwOnError = "true" [true|false]
                retryTimeoutInMilliseconds = "0" [number]
                databaseId = "0" [number]
                applicationName = "" [String]
                connectionTimeoutInMilliseconds = "5000" [number]
                operationTimeoutInMilliseconds = "5000" [number]
              />
            -->
            <add name="MySessionStateStore" type="Microsoft.Web.Redis.RedisSessionStateProvider" host="127.0.0.1" accessKey="" ssl="false" />
          </providers>
        </sessionState>
    
    注释部分提供了属性示例和每个属性的演示设置。

  3. 为 Azure Management Portal Preview 缓存边栏中的属性配置该值,并配置所需的其他值。

    note备注
    有关访问缓存属性的说明,请参阅 Review cache settings

     

     

    • host – 指定缓存端点。

    • port – 根据 ssl 设置,使用非 SSL 端口或 SSL 端口。

    • accessKey – 使用缓存的主密钥或次密钥。

    • ssl – 如果你想保护缓存/客户端与 SSL 的通信,true;否则为 false。确保指定正确的 port

      Important重要提示
      默认情况下,对新缓存禁用了非 SSL 端口。将此设置指定为 true 以使用 SSL 端口。有关启用非 SSL 端口的详细信息,请参阅在 Azure Redis Cache 中配置缓存主题中的Access Ports

       

       

    • throwOnError – 如果由于故障而引发异常,则为 true;如果希望操作失败而不提示,则为 false。通过选中Microsoft.Web.Redis.RedisSessionStateProvider.LastException 属性检查故障。默认值为 true

    • retryTimeoutInMilliseconds – 在此期间(以毫秒计)将重试失败的操作。第一次重试发生 20 毫秒后,每秒重试一次,直到retryTimeoutInMilliseconds 间隔期满。此间隔后立即重试最后一次操作。如果操作仍失败,根据 throwOnError 设置,将异常情况返回到调用程序。默认值为 0,这意味没有重试。

    • databaseId – 指定用于缓存输出数据的数据库。如果未指定,则使用默认值 0

    • applicationName – 密钥在 Redis 中存储为 <AppName>_<SessionId>_Data。这将使多个应用程序共享同一个密钥。此参数为可选,如果不提供,就使用默认值。

    • connectionTimeoutInMilliseconds – 此设置允许你覆盖 StackExchange.Redis 客户端中的 connectTimeout 设置。如果未指定,则使用 5000 的默认 connectTimeout 设置。有关详细信息,请参阅 TechNet 上的 StackExchange.Redis 配置模型

    • operationTimeoutInMilliseconds – 此设置允许你覆盖 StackExchange.Redis 客户端中的 syncTimeout 设置。如果未指定,则使用 1000 的默认 syncTimeout 设置。有关详细信息,请参阅 TechNet 上的 StackExchange.Redis 配置模型

    有关这些属性的详细信息,请参阅 适用于 Redis 的 ASP.NET 会话状态提供程序通告上的原始博客中发布的通告。

  4. 请不要忘记将 web.config 文件中的标准 InProc 会话状态提供程序注释掉。

     
    <!-- <sessionState mode="InProc" 
          customProvider="DefaultSessionProvider">
          <providers>
            <add name="DefaultSessionProvider" 
                  type="System.Web.Providers.DefaultSessionStateProvider, 
                        System.Web.Providers, Version=1.0.0.0, Culture=neutral, 
                        PublicKeyToken=31bf3856ad364e35" 
                  connectionStringName="DefaultConnection" />
          </providers>
      </sessionState> -->
    

一旦执行这些步骤,将配置应用程序以使用 Redis 缓存会话状态提供程序。在你使用应用程序中的会话时,其将在 Azure Redis Cache 实例中存储。

posted @ 2015-06-18 14:43  awp110  阅读(337)  评论(0编辑  收藏  举报