使用ASP.NET会话状态提供程序为Redis共享应用程序之间的会话状态

时间:2015-05-05 10:07:32

标签: asp.net asp.net-mvc session redis session-variables

为详细标题道歉。我们希望我们的应用程序共享会话状态。这是交易:

  • apps x.pe.com和y.pe.com正在使用ASP.NET Session State Provider for Redis(又名RedisSessionStateProvider)
  • 用户登录x.pe.com,进行一些计算并将Session["UserStats"] = 23;(或其他)写入Redis。到目前为止一切都很好。
  • 然后
  • 用户点击y.pe.com提供的页面。由于这两个应用都会发布域名为“.pe.com”的Cookie,因此x.pe.com上的Cookie会随请求一起发送到y.pe.com。
  • 因此用户在y.pe.com上获得授权。大。
  • y.pe.com致电var userStats = Session["UserStats"];,这就是问题所在。

我在redis中查了一遍,发现x.pe.com存储的密钥名称属于PE_usxuattjkpn1j4kprgnmthu3_Data。当然,这个密钥将为x.pe.com而不是y.pe.com所知。所以我强烈怀疑在var userStats = Session["UserStats"];之后,userStats将为null。

似乎有两种选择:

  1. Share session state across apps using ASP.NET_SessionId
  2. 使用机器密钥以便(某种程度上)the two ASP.NET runtimes share session state
  3. 哪个是“最好的”?我倾向于1.工作,因为它“应该工作”并且很容易理解。

    非常感谢。

0 个答案:

没有答案