gpt4 book ai didi

c# - ASP.NET 母版页错误

转载 作者:行者123 更新时间:2023-11-30 22:26:17 26 4
gpt4 key购买 nike

母版页被调用两次。在整个页面呈现后一次。此时isPostback值为false,SESSION为null。

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//SOME CODE

try
{
strUserId = Session[USERID].ToString();
}
catch
{
Response.Redirect("error.aspx");
}
}
}

对于母版页的第一页加载(在呈现页面之前)一切都很好。再次渲染后调用母版页的 page_load。这次访问 SESSION 出现异常:

HttpException (Session state can only be used when enableSessionState is set to true, either in a configuration file or in the Page directive. Please also make sure that System.Web.SessionStateModule or a custom session state module is included in the <configuration>\<system.web>\<httpModules> section in the application configuration.).

如果 page_load 被调用两次或三次,我没有任何问题。我只是不想在第二页加载时访问 SESSION。

编辑 2

第二个母版页加载是因为我之前监督过的这段代码(当前 Global.asax 文件)

 void Application_Error(object sender, EventArgs e) 
{
Server.Transfer("~/ErrorMessage.aspx");
}

ErrorMessage.aspx 页面是母版页的子页面:(

但仍然有答案的问题是,为什么即使在成功呈现页面时也会生成 Application_Error()?我试图在 Application_Error() 处保留一个断点,每次事件参数都是空的。

最佳答案

尝试将以下代码添加到您的 Web.config 文件中 - 您可能必须将其嫁接进去,因为我不知道它目前的样子。你可以引用这个post查看整个对话和条件。

<system.webServer>
<modules>
<!-- UrlRewriter code here -->
<remove name="Session" />
<add name="Session" type="System.Web.SessionState.SessionStateModule" preCondition="" />
</modules>
</system.webServer>

编辑 1

问题很可能与您试图在母版页的 ASPX 页面中连接事件处理程序这一事实有关。这总是会导致围绕访问 Session 甚至 Application 变量等问题。所以,请尝试以下操作:

  1. ASPX 文件中删除标记的事件处理程序。
  2. 在母版页的构造函数中放置以下代码。

构造函数代码

public MasterPage()
{
this.Load += new EventHandler(Page_Load);
}

然后运行您一直在同一个处理程序中运行的代码。

编辑2

检查您的 Web.config 并查看它是否正确设置了以下部分。

<system.web>
<pages enableSessionState="true" />
...
</system.web

关于c# - ASP.NET 母版页错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11951772/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com