【发布时间】: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