2011-04-15 247 views
2

我使用通过ASP.NET会话cookie跟踪内部大家都知道在我的web应用程序会话对象。因此访问该cookie对访问会话对象至关重要。我想http://http://www或子域(域是未知的,我在开发时)在我的asp.net应用程序的工作。会话cookie设置域动态在ASP.NET

+0

你的意思是如何共享子域名的cookies ..或者当他们有或无“www”的使用.... ??? – sajoshi 2011-04-15 05:24:12

回答

0

不能完成。会话cookie仅适用于1个域和1个域。

你可以,但是,写自己的会话管理系统,也许实现共享会话的方式。我仍然不认为你可以重新使用cookie,因为浏览器甚至不会将它发送到第一位。


经过一些更多的想法,我已经决定,我不知道。 :)也许,如果两个子域都映射到同一个ASP.NET应用程序,则可以使共享会话正常工作。所有你需要做的就是设置你的cookies这样:

<httpCookies domain=".maindomain.com"> 

如果不同subdomians不映射到相同的应用程序,我想你肯定会需要编写自己的会话管理。


很明显,在这一点上,你应该把所有我写的东西都记下来。我只是留下我的答案,让你得到一些想法,以便人们可以评论它的正确性。

+0

这是可能的。该域在应用程序生命周期中不会改变。这是有一天知道的。您可以通过'Request.Url'获取当前域并在运行时设置'ASP.NET_SessionId',但这有点棘手,我不知道该怎么做。 – Xaqron 2011-04-15 04:00:06

+0

现在我们更近了。事实上,我现在的做法与你的建议一样(在webconfig中使用usnig'httpCookies'),但是寻找一些代码来放置会话被操纵的aspx页面。然后,我可以删除该web.config硬编码密钥和应用程序在任何域中工作。我需要的是做这个密钥在代码中做的事情(在运行时我知道域)。 – Xaqron 2011-04-15 09:57:45

-1

你为什么不离开域字段为空?这样你就不会将你的cookies绑定到某个特定的域名,并且能够很好地发挥你网站的任何域名。

+0

不可以。将它留空意味着它将完全使用请求来自的域。因此,如果您在www.site.com上,cookie将为www.site.com设置,并且不会提供给* .site.com。 – Jasmine 2017-04-27 23:24:28