今天开发做一个登陆界面,登陆成功后通过Response.Redirect重定向到登陆后的目标页面。
目标页面做了登陆验证,如果Session中用户信息不存在,则需要重新登陆。结果发现登陆成功后,将用户信息保存到了Session中,但是Response.Redirect过去的页面上Session为空。查询了相关资料,原来asp.net 执行 Response.Redirect 时会强制终止当前Response ,不发送当前页面的cookie 给浏览器,而是发送一个指令告诉浏览器重新发送一个新的HTTP请求到新的URL,结果导致当前的Session 丢失。
我们来看看输入Response.Redirect的提示:
所以我们只要输入Response.Redirect(url,false),不要终止当前页的执行就可以了。