微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net:在response.redirect上清除会话?

如何解决asp.net:在response.redirect上清除会话?

| 我们的网站有一个用于国家的DropDownList和一个用于语言的DropDownList。 当单击它们的组合时,我们会将用户重定向到特定国家(地区)/语言的网址,例如en-us.mysite.com 重定向发生在用户控件中的ButtonClick中(用户控件位于MasterPage中),但是当用户重定向时,当我们在global.asax中检查会话变量时(在对newdomain的请求中),将清除会话变量 对于Response.Redirect函数中的\'responseend \'参数,此情况为true和false。 这是设计使然吗? (顺便说一下,这是在localhost上,并且子域在我的计算机上的hosts文件中指定)     

解决方法

        由于您跨域访问,因此跟踪会话的Cookie丢失了,因此该会话已清除。 是的-这是设计使然。不是会话设计,而是cookie设计。 但我相信您可以允许Cookie在多个子域之间共享,如下所示:
Response.Cookies[\"domain\"].Domain = \"mysite.com\";

Making it available to:
en-us.mysite.com 和
en-au.mysite.com
foo.mystie.com
etc
但这无法解决您的问题,因为您无法控制ASP.NET会话cookie。 因此,您将必须实现自己的自定义会话机制,而我尚未做到这一点,因此无法提供太多帮助。     ,        正如RPM1984所说,这是因为您正在跨域。但是,如果要传递会话变量并在下一个请求中再次设置它,则可以恢复同一会话,并假设它是处理第二个域的同一应用程序。 您可以在OnAuthenticateRequest挂钩中执行此操作并手动设置
Request.Cookies.Add(new HttpCookie( \"ASP.NET_SessionId\",Request.Form[\"s\"] );)
(我不记得会话cookie的名称,或者它是否是可配置的。至少应该以某种方式进行实际设置) 假设您将会话ID发布到一个名为\“ s \”的变量中,但您可能会想出一种解决它的更好方法。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。