65.9K
CodeProject 正在变化。 阅读更多。
Home

如何移除冗长的 ASP.Net 错误页面

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.65/5 (5投票s)

2008年1月8日

CPOL

1分钟阅读

viewsIcon

22789

移除冗长的 ASP.Net 错误页面

引言

在开始 Web 开发时,所有程序员和社区首先都会说,不应该向最终用户客户端显示详细的错误信息。但 ASP.NET 错误页面却过于详细,有时甚至会显示源代码内容或表名,尤其是在程序员没有使用 N 层架构风格的情况下。经过对 ASP.NET 的深入研究,我发现了一种隐藏错误信息,防止黑客或任何恶意人员访问的方法,具体步骤如下:

步骤

1- 添加特殊的 web.config 标签

2- 构建错误处理类。

3- 创建自定义错误页面

4- 将错误记录到系统事件日志。

实际应用

Step one

在 web.config 文件中,在 system.web 部分添加以下标签:

<customErrors mode=”On” defaultRedirect=”~/CustomError.aspx” />

第二步

创建错误处理类

public class M3MErrorHandler : IHttpModule

{

public void Init(HttpApplication app)

{

app.Error += new EventHandler(app_Error);

}

protected void app_Error(object sender, EventArgs e)

{

HttpApplication app = (HttpApplication)app;

HttpContext context = app.Context;

Exception error = context.Server.GetLastError().GetBaseException();

context.Response.Clear();

CompilationSection compilationConfig = (CompilationSection)WebConfigurationManager.GetWebApplicationSection(“system.web/compilation”);

if (compilationConfig.Debug) context.Server.Transfer(“~/Debug.aspx”);

else

context.Server.Transfer(“~/Error.aspx”);

}

public void Dispose()

{ }

}

}

}

第三步

创建两个页面,一个用于显示调试信息,另一个用于公共使用,显示错误提示。

第四步

在 Gloabls.asax 中

使用系统日志在 Application_Error 事件中将错误记录到事件日志中

如下所示:

Exception x = Server.GetLastError().GetBaseException();
EventLog.WriteEntry(LOG_SOURCE, x.ToString(), EventLogEntryType.Error);

就这样了 :)

© . All rights reserved.