【发布时间】:2012-08-14 11:57:40
【问题描述】:
母版页被调用两次。呈现整个页面后一次。此时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 或自定义会话状态模块包含在 @ 987654322@ 应用程序配置中的部分。)。
如果 page_load 被调用两次或三次,我没有任何问题。我只是不想在第二页加载时访问 SESSION。
编辑 2
由于我之前监督过的这段代码(当前 Global.asax 文件),正在加载第二个母版页
void Application_Error(object sender, EventArgs e)
{
Server.Transfer("~/ErrorMessage.aspx");
}
ErrorMessage.aspx 页面是母版页的子页面:(
但仍然回答的问题是,为什么即使在成功呈现页面时也会生成 Application_Error()?我试图在 Application_Error() 处保留一个断点,并且每次事件 args 都是空的。
【问题讨论】:
-
“母版页被调用两次”是什么意思?你是怎么得出这个结论的?
-
你需要的远不止这些。请发布您的 MasterPage 以及相关子页面的代码隐藏,以便我们更好地了解您在说什么。
-
@Andre Calil:我在母版页的页面加载时设置了一个断点。它在页面渲染之前被调用,然后在页面渲染之后被调用。
-
子页面是否有任何启用 AJAX 的控制器?每个子页面都会发生这种情况吗?
-
error.aspx是否也使用相同的 MasterPage?