多个域上的ASP.NET会话

时间:2010-09-24 15:50:50

标签: c# asp.net session dns

是否有适当的.NET解决方案用于在多个域上提供持久性服务器会话?

即。如果该站点的用户登录www.site1.com,他们也将登录www.site2.com

安全性是我们正在制定的计划的一个问题......

谢谢!

4 个答案:

答案 0 :(得分:1)

是否需要在会话中,或者您是否正在寻找单点登录解决方案。如果后者看一下ADFS的内容 http://en.m.wikipedia.org/wiki/Active_Directory_Federation_Services?wasRedirected=true

答案 1 :(得分:1)

你可能想从这里开始而不是入侵ASPState数据库(可能,但我不建议):http://www.codeproject.com/KB/session/sharedsession.aspx

基本上,您将AppDomain设置为www.site1.com& www.site2.com使用反射。

可能也需要AppPath,我们需要,但我们的设置与您的设置略有不同。我们补充说:

        FieldInfo appDomainInfo = typeof(HttpRuntime).GetField("_appDomainId", BindingFlags.Instance | BindingFlags.NonPublic);
        appDomainInfo.SetValue(theRuntime, "/LM/W3SVC/1/ROOT/A_Website_Name_Here");

答案 2 :(得分:1)

“会话”这个词在ASP.NET中可能有点令人困惑。

如果您正在谈论安全性(身份验证和授权),那么您可能正在寻找单点登录解决方案。换句话说,当用户登录到一个站点时,系统不会提示他们登录到另一个相关站点。看一下Windows Identity Foundation,OAuth,Jasig CAS。 CAS是我首选的解决方案(我是.NET客户端的开发人员),但服务器是用Java编写的,你需要一些Java专业知识才能按照你想要的方式进行配置。

在ASP.NET中,会话状态是与身份验证和授权完全独立的组件(尽管它可能取决于身份验证步骤的结果)。如果您尝试在两个站点之间共享信息(即购物车内容),您可以将两个域配置为使用与会话提供程序相同的数据库(google aspnet_regsql -ssadd),也可以将数据存储在数据库中两者都可以访问。

有关我为什么强调区别的更多信息,请查看:http://www.codeproject.com/KB/aspnet/ASPDOTNETPageLifecycle.aspx

祝你好运。

答案 3 :(得分:0)

尝试使用IIS 7.5 Url Rewrite 2模块的规范主机名URL重写功能:Download

(此答案依赖于两个URL都具有同一Web应用程序的hostheader条目)