问:
我使用ELMAH
- 错误记录模块和处理程序。
但我想向用户显示不错的错误页面。
我的问题分为两部分:
此处是否需要任何首选设计或信息 页面。(要求)。任何建议,链接都会很棒。
当我评论Clear error
行时,会向用户显示错误页面
,否则错误页面不会出现。为什么我们清除
错误?以及如何显示错误页面。
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"/>
答案 0 :(得分:1)
我会试着回答。 对于错误页面,我不使用.aspx页面,因为此页面通过ASP .Net模块,一个模块也可能有错误。所以我推荐一个静态页面(.html one),仅由IIS提供。当然,我也希望我看到错误页面使用相同的网站主题,这很容易使用母版页,也可能是当前会话的其他信息,如登录用户等。所有这些都涉及与ASP .Net因此也存在获取错误并被重定向到默认框架生成的错误页面的风险。所以一个非常轻的错误页面(相同的颜色,字体样式等),可能有一些图形和明确的消息,对于用户来说已经足够了。
对于Elmah我也使用了一些做法:首先,我不使用处理程序的“通常”名称,而是使用其他内容,例如“access-to-elmah-error.ashx”。认为每个人都知道elmah.ashx或error.ashx用于显示服务器端错误以及黑客的良好来源。接下来是我在授权部分保护它。如果网站出现问题我无法登录,我可以更改web.config以取消保护,看看发生了什么。