母版页被调用两次。呈现整个页面后一次。此时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(会话状态只能在 enableSessionState 设置为 true 时使用,无论是在配置文件中还是在 Page 指令中。还请确保 System.Web.SessionStateModule 或自定义会话状态模块包含在
<configuration>\<system.web>\<httpModules>
应用程序的部分中配置。)。
如果 page_load 被调用两次或三次,我没有任何问题。我只是不想在第二页加载时访问 SESSION。
编辑 2
由于我之前监督过的这段代码(当前 Global.asax 文件),第二个母版页加载正在发生
void Application_Error(object sender, EventArgs e)
{
Server.Transfer("~/ErrorMessage.aspx");
}
ErrorMessage.aspx 页面是母版页的子页面:(
但仍然回答的问题是为什么即使在成功呈现页面时也会生成 Application_Error() ?我试图在 Application_Error() 处保留一个断点,并且事件 args 每次都是空的。