ASP.NET MVC中多个浏览器选项卡中的唯一会话
发布时间:2020-12-16 00:18:46 所属栏目:asp.Net 来源:网络整理
导读:每当用户在ASP.NET MVC应用程序中打开新的浏览器选项卡或窗口时,我想创建唯一的会话.是否可以在ASP.NET / MVC中使用? 我试着按照下面的解决方案 asp.net – session – multiple browser tabs – different sessions? 但它在ASP.NET MVC中不起作用.上面的解
每当用户在ASP.NET MVC应用程序中打开新的浏览器选项卡或窗口时,我想创建唯一的会话.是否可以在ASP.NET / MVC中使用?
我试着按照下面的解决方案 asp.net – session – multiple browser tabs – different sessions? 但它在ASP.NET MVC中不起作用.上面的解决方案使用ViewState,在MVC中我尝试使用TempData,但它不起作用. 解决方法
多年后我终于找到了解决这个问题的方法:
1.)浏览器必须自己提供ID,因为http是无状态的,cookie不是单独存储在浏览器选项卡中,因此asp.net会话也不区分单个选项卡. 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 5(Core)中添加对类库项目的引用
- asp.net-mvc – ASP.NET MVC:与非移动视图一起使用的移动布
- asp.net-mvc – 如何使用Mono.WebServer(XSP)运行我的单声道
- asp.net – Response.Write和UpdatePanel
- asp.net-mvc – 图像优化框架未初始化
- 一个关于反序列化的小问题
- asp.net – 使加密字符串的长度与输入字符串相同?
- asp.net-mvc – 在ASP.NET MVC中获取当前操作/控制器的自定
- asp.net-mvc – IDisposable ASP.net MVC控制器
- asp.net – 刷新网页会怎么样?