【发布时间】:2011-01-06 05:16:47
【问题描述】:
我有一个运行 ASP.NET 的应用程序。我有不同的域和不同的子域。我希望这些域与其子域共享会话。
例如,以下域访问此应用程序:
www.example1.com
print.example1.com
www.example2.com
print.example2.com
如果用户访问 www.example1.com 和 print.example1.com,我希望它使用相同的会话。如果用户要访问 www.example2.com 和 print.example2.com,我希望它使用与 *.example1.com 不同的会话。
我过去处理它的方式是在 IIS6 中完美运行的 page_load 中的 hack:
Response.Cookies["ASP.NET_SessionId"].Value = Session.SessionID;
Response.Cookies["ASP.NET_SessionId"].Domain = SiteUtility.GetCookieDomain();
(SiteUtility.GetCookieDomain 会根据请求的 url 返回 .example1.com 或 .example2.com)
不幸的是,这似乎不再适用于 iis7。用户访问的每个子域/域,用户都会获得一个新的会话 cookie。
然后我找到了 web.config 条目:
'
这非常适合在 example1.com 子域之间共享会话 cookie。不幸的是,这完全搞砸了 *.example2.com 的会话状态。
关于如何解决这个问题的任何想法?
【问题讨论】:
-
感谢大家的帮助。我确定其中一个子域在 ie8 中处于受信任状态,而另一个则不是。当两者都处于受信任状态(并且可能都处于不受信任状态)时,它可以工作。泡利在这方面和我一起度过的时间最多,所以我想把答案归功于他。
标签: c# asp.net session cookies web-config