首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ASP.NET母版页错误

ASP.NET母版页错误
EN

Stack Overflow用户
提问于 2012-08-14 11:57:40
回答 3查看 3.7K关注 0票数 2

母版页将被调用两次。在呈现完整页之后进行一次。此时,isPostback值为false,会话为空。

代码语言:javascript
运行
复制
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        //SOME CODE

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

对于母版页的第一个页面加载(在呈现页面之前),一切都很好。再次呈现后,调用母版页的page_load。这一次访问会话提供了一个例外:

HttpException (会话状态只能在enableSessionState设置为true时使用,无论是在配置文件中还是在页面指令中。还请确保System.Web.SessionStateModule或自定义会话状态模块包含在应用程序配置的<configuration>\<system.web>\<httpModules>部分中。)。

如果page_load接到两次或三次电话,我没有任何问题。我只是不想在第二页加载时访问会话。

编辑2

第二个母版页加载是因为我在前面已经看到的代码(当前的Global.asax文件)而发生的。

代码语言:javascript
运行
复制
 void Application_Error(object sender, EventArgs e) 
    {         
       Server.Transfer("~/ErrorMessage.aspx");
    }

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

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

EN

回答 3

Stack Overflow用户

发布于 2012-08-14 12:26:22

尝试将以下代码添加到您的Web.config文件中--您可能不得不将其移植进来,因为我不知道它当前的样子。您可以引用此帖子来查看整个会话和条件。

代码语言:javascript
运行
复制
<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文件中删除标记的up事件处理程序。
  2. 在母版页的构造函数中,放置以下代码。

构造器代码

代码语言:javascript
运行
复制
public MasterPage()
{
    this.Load += new EventHandler(Page_Load);
}

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

编辑2

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

代码语言:javascript
运行
复制
<system.web>
    <pages enableSessionState="true" />
    ...
</system.web
票数 2
EN

Stack Overflow用户

发布于 2012-08-16 04:07:34

我想我已经找到了问题的原因,在查看了firebug中的请求之后。对于两个不存在的.gif文件,有一些ajax请求存在。因此,调用了Application_Error()在Global.asax中。在那里生成的异常是“文件未找到”。然后在Application_Error()中有一个Application_Error(“~/ErrorMessage.aspx”)。不幸的是,ErrorMessage.aspx是母版页的子页。因此,在每个页面上都发出了AJAX请求,这导致了“found”异常,然后将其传输到ErrorMessage.aspx,看起来就像调用了两次母版页page_load。

票数 1
EN

Stack Overflow用户

发布于 2012-08-14 12:20:55

错误描述告诉您检查使用Session的设置。你检查过那个设置(enableSessionState)了吗?

此外,检查error.aspx没有使用母版页,直到您知道它工作得更好,否则您可能会得到一些奇怪的错误.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11951772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档