asp.net - 会话 - 多个浏览器选项卡 - 不同的会话? [英] asp.net - session - multiple browser tabs - different sessions?

查看:23
本文介绍了asp.net - 会话 - 多个浏览器选项卡 - 不同的会话?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想为每个浏览器标签维护一个会话状态.

I'd like to maintain a session state per browser tab.

这在 ASP.NET 中容易(甚至可能)做到吗?

Is this easy (or even possible) to do in ASP.NET?

示例:用户在 Firefox 中按 Ctrl-T 5 次并在每个选项卡中访问该站点.我希望每个选项卡在服务器上都有自己的会话状态

Example: A user hits Ctrl-T in firefox 5 times and visits the site in each tab. I'd like each tab to have its own session state on the server

推荐答案

要在不弄乱 URL 的情况下促进一个用户的多选项卡会话状态,请执行以下操作.

To facilitate multi-tab session states for one user without cluttering up the URL, do the following.

在你的表单加载函数中,包括:

In your form load function, include:

If Not IsPostback Then
  'Generate a new PageiD'
  ViewState("_PageID") = (New Random()).Next().ToString()
End If

当您将某些内容保存到会话状态时,请包含 PageID:

When you save something to your Session State, include the PageID:

Session(ViewState("_PageID").ToString() & "CheckBoxes") = D

注意事项:

  • 与一般的会话 ID 一样,您不能相信恶意查看者不会更改会话 ID/页面 ID.对于所有用户都可以信任的环境,这只是一个有效的解决方案.幸运的是,ViewState 确实提供了比使用隐藏输入字段更多的保护.
  • 在 PostBack 恢复 ViewState 之前,您将无法访问 PageID.因此,您将无法访问 page_init() 处理程序中的 PageID.

这篇关于asp.net - 会话 - 多个浏览器选项卡 - 不同的会话?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆