我试图捕获所有错误,除了global.asax文件中的'404-File not found'错误并写入服务器中的文本文件,但很多错误都会被遗漏,比如FormatException错误,会话输出错误和“黄页错误”出现!
如何在此处捕捉所有错误。
void Application_Error(object sender, EventArgs e)
{
CT.Bussiness.DevCommonFunctions devTools = new CT.Bussiness.DevCommonFunctions();
HttpContext ctx = HttpContext.Current;
//ctx.Response.
// Get page url
if (ctx != null)
{
string pageName = ctx.Request.Url.ToString();
Exception ex = Server.GetLastError().GetBaseException();
HttpException checkException = (HttpException)ex;
if (checkException.GetHttpCode() != 404)
{
string errorDate = DateTime.Now.ToString();
//string pageName =pageName;
string errorMessage = ex.Message;
string errorSource = ex.Source;
//string errorInnerException=ex.InnerException.ToString();
string errorData = ex.Data.ToString();
string errorTarget = ex.TargetSite.ToString();
string errorStack = ex.StackTrace.ToString();
devTools.WriteErrorsIntoErrorLog(errorDate, pageName, errorMessage, errorSource, "InnerException", errorData, errorTarget, errorStack);
//devTools.SendErrorMail("developer3@devwebservices.net,developer4@devwebservices.net,developer5@devwebservices.net,hr@devwebservices.net", errorDate, pageName, errorMessage, errorSource, "InnerException", errorData, errorTarget, errorStack);
//Response.TrySkipIisCustomErrors = true;
Response.Redirect("~/Error.aspx");
//Response.Redirect("Error.aspx");
}
}
}
解决
我跟随KPL建议如下:
因此解决了!
答案 0 :(得分:0)
使用:
1。)web.config" customErrors"标记以避免"黄页错误":
<customErrors mode="On" defaultRedirect="~/Error.aspx">
<error statusCode="400" redirect="/error/400-bad-request/" />
<error statusCode="404" redirect="/error/404-file-not-found/" />
<error statusCode="500" redirect="/error/500-server-error/" />
</customErrors>
2。)另请尝试使用Elmah来记录错误。
ELMAH(错误记录模块和处理程序)是一个完全可插拔的应用程序范围的错误记录工具。它可以动态添加到正在运行的ASP.NET Web应用程序,甚至是机器上的所有ASP.NET Web应用程序,而无需重新编译或重新部署。
将ELMAH放入正在运行的Web应用程序并进行适当配置后,您将获得以下功能,而无需更改单行代码: