asp.net - 会话 - 多个浏览器标签 - 不同的会话?

Bri*_*ter 28 asp.net iis session

我想维护每个浏览器选项卡的会话状态.

这在ASP.NET中是否容易(甚至可能)?

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

Bri*_*ter 21

要为一个用户提供多标签会话状态而不会使URL混乱,请执行以下操作.

在表单加载功能中,包括:

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

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

Session(ViewState("_PageID").ToString() & "CheckBoxes") = D
Run Code Online (Sandbox Code Playgroud)

备注:

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

  • 对于我本周必须处理的数据完整性问题,这是一个很好的解决方案.用户打开第二个选项卡,然后返回以更新第一个选项卡中保存的记录,当然还有与第二个记录关联的会话数据.我使用了此解决方案的变体来防止错误记录上的错误更新. (2认同)

zer*_*kms 15

<configuration>
  <system.web>
    <sessionState cookieless="true"
      regenerateExpiredSessionId="true" />
  </system.web>
</configuration>
Run Code Online (Sandbox Code Playgroud)

http://msdn.microsoft.com/en-us/library/ms178581.aspx

在这种情况下,每个选项卡将获得唯一的ID,它看起来像是另一个访问者.

  • 注意:如果用户从一个选项卡复制URL并将其粘贴到另一个选项卡中,则此操作无效.由于会话基于URL中的键,因此两个选项卡现在将使用相同的会话. (4认同)