如何在不同的标签中区分会话?

时间:2012-07-10 04:54:08

标签: asp.net session-state

我想在同一个浏览器中使用新会话打开一个asp.net应用程序,但是在另一个选项卡中。 如果可能的话,请让我知道解决方案。

1 个答案:

答案 0 :(得分:0)

最简单的解决方案是配置会话不要使用cookie作为会话标识符,并使用客户端代码打开新窗口。要实现此类方法,您需要将web.config文件中cookieless元素的session属性设置为UseUri。在这种情况下,请注意可用的副作用(来自MSDN):

  

注意配置启用AJAX的ASP.NET网站时,请仅使用UseCookies的默认值作为cookieless属性。 ASP.NET AJAX客户端脚本库不支持使用URL中编码的cookie的设置。

之后,您可以使用javascript打开包含新会话的新标签页:

<form id="form1" runat="server">
Session Id:
<%= Session.SessionID %>
<hr />
<input type="button" value="Open New Tab" onclick="openNewTab()" />
<script type="text/javascript">
    function openNewTab() {
        window.open(location.protocol + "//" + location.host + "/Default.aspx", "_blank");
    }
</script>
</form>

或者您可以实现不使用cookie作为会话标识符的自定义SessionIDManager:SessionIDManager Class