道歉的 Headers 道歉 . 我们希望我们的应用程序共享会话状态 . 这是交易:
-
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 .
两种选择似乎有用:
-
使用机器键使(不知何故)the two ASP.NET runtimes share session state
哪个是“最好的”?我倾向于1.工作,因为它“应该工作”并且易于理解 .
非常感谢 .