【问题标题】:asp.net persisting session variables across sub-domains跨子域的 asp.net 持久会话变量
【发布时间】:2015-12-06 23:07:39
【问题描述】:

我有两个使用表单身份验证和单点登录的 ASP.NET 应用程序,我想在它们之间保留会话变量。

在测试时,我似乎无法从其他应用程序中读取会话变量。两个应用程序都在同一个域(app1.domain.com 和 app2.domain.com)上,我已经正确设置了我的配置(a.f.a.i.k.)以反映这一点。

我注意到,在发布服务器上进行测试时,即使在同一浏览器上使用标签页,会话 ID 也不同(我认为它们会相同!),但在我的本地 IIS 上调试会话 ID 是相同的(而且我仍然无法跨子域读取会话变量)。

有人知道我可能错过了什么吗?

最好的问候

【问题讨论】:

    标签: asp.net subdomain single-sign-on forms-authentication session-variables


    【解决方案1】:

    默认情况下,SessionState 模式是 InProc,这意味着 Session State 数据存储在每个 AppDomain 的内存中。 AppDomain 是隔离的,它们不共享 SessionState。

    您需要 SQLServerStateServer 作为SessionState mode

    【讨论】:

    • 两个应用程序在同一个域中
    • 请不要与 AppDomain(应用程序域)和 URL 子域混淆。由于您有两个不同的 Web 应用程序,它们在 IIS 中的两个不同的 AppDomain 上运行。
    • OK所以说清楚(我对IIS的理解还是有点朦胧),我有两个网站运行在同一个服务器上,同一个域名,但是因为是不同的网站(不是默认网站中的应用程序),它们有不同的 AppDomains,因此不能共享 Session 变量?
    猜你喜欢
    • 1970-01-01
    • 2015-08-01
    • 2012-12-14
    • 1970-01-01
    • 2012-03-08
    • 2022-11-12
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    相关资源
    最近更新 更多