ELMAH在主题页面错误

时间:2010-02-11 20:45:45

标签: c# asp.net exception-handling elmah

我有一个主题页面,主题在http模块中选择。

public void context_PreRequestHandlerExecute(object sender, EventArgs e)
{
    Page p = HttpContext.Current.Handler as Page;

    if (p != null)
    {
        //get theme
        string theme = GetTheme(HttpContext.Current.Request.Url.Host);

        Debug.WriteLine(String.Format("Loading theme {0}", theme));

        //set theme of page
        p.Theme = theme;
    }
}

public void context_PreRequestHandlerExecute(object sender, EventArgs e) { Page p = HttpContext.Current.Handler as Page; if (p != null) { //get theme string theme = GetTheme(HttpContext.Current.Request.Url.Host); Debug.WriteLine(String.Format("Loading theme {0}", theme)); //set theme of page p.Theme = theme; } }

现在,当我请求elmah.axd时,抛出以下异常:

使用主题css文件需要页面上的标题控件。 (例如)。

当我禁用http主题模块时,一切都很好,并显示elmah.axd页面。我认为这是ErrorLogPage中的一个小错误。 ErrorLogPage应该处理一个主题可以给予页面或者应该忽略给定主题的事实。

现在我使用解决方法:

private const string ELMAH_ERROR_PAGE = "Elmah.ErrorLogPage";

        if (p.GetType().FullName != ELMAH_ERROR_PAGE)
        {
            p.Theme = theme;
        }

你有更好的想法或想法吗?

的Gr

马亭

荷兰

1 个答案:

答案 0 :(得分:0)

之前已经解决了您的问题的解决方案:
 Exclude certain pages from using a HTTPModule

  

您可以使用HTTPHandler   一个HTTPModule。处理程序让你   声明它们时指定路径   在Web.Config。

<add verb="*" path="/validate/*.aspx" type="Handler,Assembly"/>
     

如果您必须使用HTTPModule,那么   可以检查一下这条路   请求,如果它是一个   排除,绕过验证。