0

我试图在 global.asax 文件中捕获除“404-File not found”错误之外的所有错误并写入服务器中的文本文件,但是很多错误都被遗漏了,例如 FormatException 错误、Sessionout 错误和“错误黄页” “出现了!

我怎样才能在这里捕获所有错误。

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 的建议如下:

  1. 实施 Elmah
  2. 排除 Global.asax 和
  3. 在 web.config 中编写重定向代码。

从而解决!

4

1 回答 1

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 应用程序并进行适当配置后,您无需更改任何一行代码即可获得以下功能:

  • 记录几乎所有未处理的异常。
  • 用于远程查看重新编码异常的整个日志的网页。
  • 用于远程查看任何记录的异常的完整详细信息的网页,包括彩色堆栈跟踪。
  • 在许多情况下,即使关闭了 customErrors 模式,您也可以查看 ASP.NET 为给定异常生成的原始黄屏死机。
  • 每个错误发生时的电子邮件通知。
  • 来自日志的最后 15 个错误的 RSS 提要。
于 2012-10-31T05:10:51.200 回答