【问题标题】:New Session for New window in ASP.NETASP.NET 中新窗口的新会话
【发布时间】:2023-04-01 16:32:01
【问题描述】:

在一个 ASP.NET 应用程序中,我们提供了一个链接来打开另一个应用程序。如果用户单击该超链接,另一个应用程序将在新窗口中打开。问题是两个应用程序都使用相同的会话。有什么方法可以更改新窗口的会话 ID?

我已经尝试在页面加载时放弃会话并清除 sessionID cookie。但它正在创建新的会话 ID,并且两个窗口都在访问新的会话 ID。我想为这两个窗口设置单独的会话 ID。

有什么办法吗?

【问题讨论】:

  • 如果您不关心您的网址,您可以尝试Cookieless Sessions,但可能有更正确的方法来做到这一点。
  • 听起来您使用了错误的工具来完成这项工作并与谷物作斗争。你想做什么让你首先想要这种行为?
  • 我们的应用程序中有一个视图页面。我们传递给这个页面的所有参数都是通过 session 完成的。因此,当我们在新窗口中打开同一页面时,会引起问题,因为两者都使用相同的会话。有没有办法单独清除会话ID?这样每个窗口都会有不同的会话。

标签: c# asp.net .net session


【解决方案1】:

我认为在您使用 Session 时没有什么好的方法可以做到这一点。对于不想在两个窗口之间共享的数据,您可能需要考虑使用 Viewstate 而不是 session。

【讨论】:

    【解决方案2】:

    您可以根据您正在处理的应用程序动态创建会话 ID。当您打开另一个应用程序时,您可以使用唯一 ID 为第二个应用程序创建新会话。

    【讨论】:

      【解决方案3】:

      同样的问题只是使用浏览器标签。同样的答案对你有用

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

      【讨论】:

      • 这会将会话 id 放在 url 我不希望在 url 中。
      • @sabaedge 这不是上一个问题的答案所暗示的。您需要做的是使您使用的会话 id 唯一。这可以通过存储在隐藏变量或视图状态中的随机数或 guid 来完成
      【解决方案4】:

      使用会话 ID。并将其置于视图状态。 将视图状态中的 sessionid 与会话中的会话 id 进行比较。 如果它们不同,则在新窗口中创建一个新会话并记住在视图状态中更新新 ID

      【讨论】:

        猜你喜欢
        • 2011-02-08
        • 2017-10-21
        • 2012-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多