Asp.net 使用子域时正在重置的会话
我试图在我的ASP.NET网站中使用子域,但在重置会话时遇到了一些问题 我已将主机文件编辑为“localhost”、“one.localhost”和“two.localhost”。我可以转到这些URL中的任何一个,做我需要做的事情,然后登录到我的系统。会话模式在web.config中定义如下:Asp.net 使用子域时正在重置的会话,asp.net,sql-server,session,session-state,web-config,Asp.net,Sql Server,Session,Session State,Web Config,我试图在我的ASP.NET网站中使用子域,但在重置会话时遇到了一些问题 我已将主机文件编辑为“localhost”、“one.localhost”和“two.localhost”。我可以转到这些URL中的任何一个,做我需要做的事情,然后登录到我的系统。会话模式在web.config中定义如下: <sessionState cookieless="false" mode="SQLServer" timeout="300" sqlConnectionString="Data
<sessionState cookieless="false" mode="SQLServer" timeout="300"
sqlConnectionString="Data Source=MyDatabase;user id=User1;password=pass"/>
我正在使用SQLServer,因为该网站将作为webfarm运行
我发现,当我单击某个导致回发的内容时,所有会话都会丢失,并且会创建一个新会话id,当这种情况发生时,我的网站现在是“localhost”,而不是登录的“one.localhost”
有人知道这可能是什么原因吗
Cheers基本上,登录cookie中设置的域特定于one.localhost 有一些可能的黑客。例如,参见以下问题的最后一个答案: 在登录/开始页面中,运行以下操作:
Response.Cookies["ASP.NET_SessionId"].Value = Session.SessionID;
Response.Cookies["ASP.NET_SessionId"].Domain = ".mydomain.com";
基本上,登录cookie中设置的域特定于one.localhost 有一些可能的黑客。例如,参见以下问题的最后一个答案: 在登录/开始页面中,运行以下操作:
Response.Cookies["ASP.NET_SessionId"].Value = Session.SessionID;
Response.Cookies["ASP.NET_SessionId"].Domain = ".mydomain.com";
你的问题似乎有几个问题:
。example.com
-请参阅此处的更多信息:
如果您希望用户同时登录所有域,并且您正在使用表单身份验证,则可以使用的域
属性(请注意域路径中的前导周期):
您需要在所有站点上配置此选项
至于为什么回发时会将您重定向到localhost而不是一个.localhost,您需要查看已呈现的源(您是否包含一些基本href信息,或者您的表单是否显式回发到localhost而不是一个.localhost)?查看浏览器正在执行的操作的一个好工具是
最后,当您将其部署到多台服务器时,请注意不要忘记在所有站点上部署,以确保它们具有相同的值,以便它们可以正确解密会话、登录令牌、视图状态等。您的问题似乎有两个问题:
。example.com
-请参阅此处的更多信息:
如果您希望用户同时登录所有域,并且您正在使用表单身份验证,则可以使用的域
属性(请注意域路径中的前导周期):
您需要在所有站点上配置此选项
至于为什么回发时会将您重定向到localhost而不是一个.localhost,您需要查看已呈现的源(您是否包含一些基本href信息,或者您的表单是否显式回发到localhost而不是一个.localhost)?查看浏览器正在执行的操作的一个好工具是
最后,当您将其部署到多个服务器时,请注意,不要忘记在所有站点上部署,以确保它们具有相同的值,以便它们可以正确解密会话、登录令牌、视图状态等。下面是另一个链接,该链接更详细地描述了@Damien_非信徒发布的解决方案。下面是另一个链接,描述了@Damien_这个不信者更详细地发布的解决方案。