如何在asp.net c#中的不同浏览器选项卡中区分同一会话的值

时间:2015-07-16 04:48:25

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

我正在创建一个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我仍然成功登录。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

页面加载:

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

凡使用Session [&#34; JobNumber&#34;],请将其替换为PageID.Value

web.config

中不需要此代码
<configuration>
  <system.web>
    <sessionState cookieless="true"
      regenerateExpiredSessionId="true" />
  </system.web>
</configuration>