【问题标题】:how to differ values of same session in different browser tab in asp.net c#如何在asp.net c#的不同浏览器选项卡中区分同一会话的值
【发布时间】:2015-10-05 09:18:33
【问题描述】:

我正在创建一个 Web 应用程序,并且要求我必须在不同的浏览器选项卡上为同一会话 Session["JobNumber"] 设置不同的值。如果我在第一个选项卡中进行任何更改,这些更改不应影响第二个选项卡。

我已经对此进行了搜索,并在所有博客和 SO 答案中找到了相同的答案,所以我尝试了这个:

在 web.config 文件中

<configuration>
  <system.web>
    <sessionState cookieless="true"
      regenerateExpiredSessionId="true" />
  </system.web>
</configuration>

在表单的页面加载时

if (!IsPostBack)
            {
                PageID.Value = Guid.NewGuid().ToString();
.

.

}

这里PageID 是:

<asp:HiddenField ID="PageID" runat="server" />

我在会话中存储值的代码

var sessionkey = string.Format("Session_{0}", PageID.Value);
            Session[sessionkey] = SelectedNumber;
            Session["JobNumber"] = Session[sessionkey];

这是我在任何地方都能找到的,所以我尝试了这个。但它不工作。相反,当我 log in 弹出我的应用程序时会显示消息 error:401。如果我从web.config 中删除该代码,此错误将消失。

因为401 用于身份验证失败。我在 web.config 中编写的代码与此有何关系?奇怪的是,弹出消息说error:401 仍然我成功登录。有什么建议吗?

【问题讨论】:

    标签: c# asp.net session web-config session-state


    【解决方案1】:

    页面加载时:

    PageID.Value = Session["JobNumber"].ToString();
    

    在使用 Session["JobNumber"] 的地方,将其替换为 PageID.Value

    web.config中不需要此代码

    <configuration>
      <system.web>
        <sessionState cookieless="true"
          regenerateExpiredSessionId="true" />
      </system.web>
    </configuration>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-19
      • 1970-01-01
      • 2014-05-19
      • 2019-05-02
      • 1970-01-01
      • 2013-12-28
      • 2020-01-15
      • 1970-01-01
      相关资源
      最近更新 更多