使用母版页的自定义错误处理程序

时间:2011-03-03 23:42:52

标签: c# error-handling master-pages httpmodule

我有一个这样的自定义错误处理程序类:

namespace AccountCenterUserControls
{
    public class EWHErrorModule : IHttpModule
    {
        public void Init(HttpApplication app)
        {
            app.Error += new System.EventHandler(OnError);
        }

        public void OnError(object obj, EventArgs args)
        {
            Page myPage = (System.Web.UI.Page)HttpContext.Current.Handler;

            ctx.Server.ClearError();
        }

        public void Dispose() { }
    }
}

我在web.config中实例化了这个错误处理程序,如下所示:

<httpModules>
        <!-- EWH Custom Error Handler -->
        <add type="AccountCenterUserControls.EWHErrorModule" name="EWHErrorModule"/>
</httpModules>

它可以捕获错误。我的问题是,如何让我的被困错误页面从我的母版页中受益?我可以从我的页面获取各个主页,但是当我处于这个深层时,我不太确定如何设置contentplaceholder。

1 个答案:

答案 0 :(得分:0)

在ASP.NET中,可以在页面生命周期中的任何时刻引发应用程序错误事件,您可能正在执行错误处理程序,而修改页面完全是非法的。如果允许,您可以使用FindControl获得对要修改或替换的元素的引用。同样,如果时间是合法的,您可以修改控件的控件集合,或者从控件的控件集合中添加或删除控件,以实现最终所需的渲染。

我希望我的假设对你的情况是正确的如果他们是,我确实想知道你为什么不简单地在Global.asax / .cs中实现Application_Error?这将自动连接到ASP.NET应用程序的OnError事件。在该处理程序中,您可以使用Request,Response和Session的引用。

此外,您应该知道HttpContext.Current.Handler可以并且将在生命周期的某些阶段返回null。例如,在请求被传递给处理程序之前发生了错误,就像在身份验证请求期间一样。

相关问题