显示自定义错误页面问题

时间:2011-07-27 08:15:06

标签: asp.net web-config global-asax elmah custom-error-pages

问:

我使用ELMAH - 错误记录模块和处理程序。

但我想向用户显示不错的错误页面。

我的问题分为两部分:

  1. 此处是否需要任何首选设计或信息 页面。(要求)。任何建议,链接都会很棒。

  2. 当我评论Clear error行时,会向用户显示错误页面 ,否则错误页面不会出现。为什么我们清除 错误?以及如何显示错误页面。


  3.  protected void Application_Error(object sender, EventArgs e)
            {
                HttpContext ctx = HttpContext.Current;
                Exception exception = ctx.Server.GetLastError();
                string errorInfo =
                   "<br>Offending URL: " + ctx.Request.Url.ToString() +
                   "<br>Source: " + exception.Source +
                   "<br>Message: " + exception.Message +
                   "<br>Stack trace: " + exception.StackTrace;
    
                ErrHandler.WriteError(errorInfo);
    
                ctx.Server.ClearError();
    
            }
    

       <customErrors mode="On" defaultRedirect="Error.aspx"/>
    

1 个答案:

答案 0 :(得分:1)

我会试着回答。 对于错误页面,我不使用.aspx页面,因为此页面通过ASP .Net模块,一个模块也可能有错误。所以我推荐一个静态页面(.html one),仅由IIS提供。当然,我也希望我看到错误页面使用相同的网站主题,这很容易使用母版页,也可能是当前会话的其他信息,如登录用户等。所有这些都涉及与ASP .Net因此也存在获取错误并被重定向到默认框架生成的错误页面的风险。所以一个非常轻的错误页面(相同的颜色,字体样式等),可能有一些图形和明确的消息,对于用户来说已经足够了。

对于Elmah我也使用了一些做法:首先,我不使用处理程序的“通常”名称,而是使用其他内容,例如“access-to-elmah-error.ashx”。认为每个人都知道elmah.ashx或error.ashx用于显示服务器端错误以及黑客的良好来源。接下来是我在授权部分保护它。如果网站出现问题我无法登录,我可以更改web.config以取消保护,看看发生了什么。