我想维护每个浏览器选项卡的会话状态
在ASP.NET中这样做容易吗(甚至可能)
示例:用户在firefox中点击Ctrl-T 5次,然后在每个选项卡中访问该站点。我希望每个选项卡在服务器上都有自己的会话状态
要使一个用户的多选项卡会话状态更方便,而又不会弄乱URL,请执行以下操作
在表单加载函数中,包括:
如果不是,则返回
'生成新的PageiD'
ViewState(“_PageID”)=(New Random()).Next().ToString()
如果结束
将某些内容保存到会话状态时,请包含页面ID:
会话(视图状态(“_PageID”).ToString()&;“复选框”)=D
注释:
- 与会话ID一般一样,您不能相信恶意查看器不会更改会话ID/PageID。对于可以信任所有用户的环境,这是唯一有效的解决方案。幸运的是,ViewState提供了比使用隐藏输入字段更多的保护
- 在回发时恢复ViewState之前,您将无法访问PageID。因此,您将无法访问page_init()处理程序中的PageID