我有一个ASP.NET网站。
以下是发生的事情:
我打开网站并登录。
我在IE中打开了同一站点的另一个窗口。
当我这样做时,它会将我带到会话到期时假设显示的页面。
那么,如果我们在另一个浏览器窗口中打开网站,请告诉我如何确保会话ID不会过期?
谢谢!
答案 0 :(得分:5)
会话未到期,因为您已经打开了一个新窗口;新窗口必须没有用于存储session-id的cookie。大多数情况下,这些cookie是短暂的或基于“会话”的cookie。
会话cookie可能会也可能不会在浏览器窗口之间共享,具体取决于浏览器以及您打开新窗口的方式。例如,在IE 9中,使用Javascript,Ctrl + N或Ctrl + T启动的新窗口将共享会话cookie。但是,通过转到文件/新会话启动的新窗口将不会共享会话cookie。
您也不会看到不同浏览器之间共享的Cookie(例如,IE和Firefox)。
答案 1 :(得分:0)
为迈克尔的出色反应添加一个更简单的答案 - 因此简短的回答是“你无法直接实现这一点”。
但您可以做的是在您的应用程序中实现跟踪,以便您始终了解用户的上一个操作是什么,无论他们进入哪个会话,都会强制将其保留在您指定的工作流程中。
然而,要实现这一点,你必须基本上忽略会话变量(无论如何这可能是一个好主意;))等,并实现一个不断跟踪用户行为,当前位置和任何其他相关信息的框架。显然涉及很多开销,但这是我所知道的唯一方法,以确保某个用户总是在他们希望他们从不同的浏览器,机器等登录时最终到达的地方结束。