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