使用Azure Redis缓存会话状态提供程序跨不同域维护会话

时间:2016-01-14 09:48:33

标签: asp.net session azure redis

如何使用Azure Redis缓存会话状态提供程序在不同的Web应用程序之间共享相同的会话状态?

我的两个应用程序的Web.configs都是这样的:

<sessionState mode="Custom" customProvider="MySessionStateStore">
      <providers>
        <add name="MySessionStateStore"
            type="Microsoft.Web.Redis.RedisSessionStateProvider"
            port="6380"
            host="[myhostname].redis.cache.windows.net"
            accessKey="[mykey]"
            throwOnError="true"
            applicationName="[mySharedAppName]"
            ssl="true" />
      </providers>

1 个答案:

答案 0 :(得分:1)

您通常需要做两件事:

  1. applicationName属性设置为两个应用的web.config中相同的字符串值。

  2. 如果应用程序位于不同的IIS站点或不同的服务器中,您可能需要更改ASP.NET在后台为您发送到浏览器的ASP.NET_SessionId Cookie的cookie scope 。如果该会话cookie的范围不包含这两个应用程序,您将遇到麻烦:Web浏览器将使用不同的会话cookie,您的会话将无法共享。但是如果你在同一个网站下只有两个应用程序目录,那么你就不应该考虑这个。