gpt4 book ai didi

asp.net - ASP.NET MVC 中多个浏览器选项卡中的唯一 session

转载 作者:行者123 更新时间:2023-12-04 04:11:15 24 4
gpt4 key购买 nike

每当用户在 ASP.NET MVC 应用程序中打开新的浏览器选项卡或窗口时,我都想创建唯一的 session 。有可能在 ASP.NET/MVC 中吗?

我尝试遵循以下解决方案

asp.net - session - multiple browser tabs - different sessions?

但是它在 ASP.NET MVC 中不起作用。以上使用 ViewState 的解决方案,在 MVC 中我尝试使用 TempData 但它不起作用。

最佳答案

多年后我终于找到了这个问题的解决方案:

1.) 浏览器必须自己提供 ID,因为 http 是无状态的,cookie 不是单独为浏览器选项卡存储的,因此 asp.net session 也不区分单个选项卡。

2.) 打开新标签页时,JS window.name 为''。将 window.name 更改为某个值后,只要选项卡处于事件状态并且未被某些代码更改,它就不会再更改。

所以解决方案是:在 *.master 或每个 *.aspx 文件中实现一些简短的 JS 代码:

 if (typeof window.name != undefined) {
if (window.name == '') {
var d = new Date();
window.name = '_myWnd_' + d.getUTCHours() + d.getUTCMinutes() + d.getUTCSeconds() + d.getUTCMilliseconds();
}
var eDiv = document.getElementById('div_BrowserWindowName');
var e = eDiv.getElementsByTagName('input')[0];
e.value = window.name;
}

还要在 *.master 或每个 *.aspx 文件的表单部分添加:
 <div id="div_BrowserWindowName" style="visibility:hidden;">
<asp:HiddenField ID="hf_BrowserWindowName" runat="server" />
</div>

现在您可以通过在每次回发后读取隐藏字段来检索 window.name == UNIQUE ID,即使用户从站点跳转到站点并在数小时后返回表单。

关于asp.net - ASP.NET MVC 中多个浏览器选项卡中的唯一 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22816576/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com