【问题标题】:ASP.NET and IIS6: trapping ALL application errorsASP.NET 和 IIS6:捕获所有应用程序错误
【发布时间】:2008-10-21 05:20:03
【问题描述】:

我们小组的旧版 ASP 3.0 Web 应用程序能够通过在 IIS 的“自定义错误”选项卡中设置自定义错误文件来利用全局错误文件。我无法为 ASP.NET 应用程序找到类似的解决方案。

有谁知道是否有一种方法可以让一个集中的“Error.aspx”页面(例如)捕获整个应用程序池的错误?目的是避免向每个应用的全局错误处理程序添加自定义代码 ....

非常感谢任何指导!

【问题讨论】:

    标签: asp.net iis


    【解决方案1】:

    您可以将<customErrors defaultRedirect="[url]"></customErrors> 标签添加到您的 web.config 甚至您的 machine.config 以重定向到自定义错误页面。自定义错误标签还支持多个可用于定义自定义错误的子元素。

    请记住在编辑 machine.config 文件时,它会影响该机器上的所有应用程序。

    【讨论】:

    • @SaaS:感谢您的回复!在使用 时,它基本上是在做一个 Response.Redirect,对吧?如果是这样,在加载错误页面时不会转储服务器错误信息吗?
    【解决方案2】:

    检查 global.asax.cs 文件的 Application_Error 方法。

    您可以通过以下方式在此处获取错误的详细信息:

    Exception myError = Server.GetLastError();
    Exception baseException = myError.GetBaseException();
    

    【讨论】:

      【解决方案3】:

      我们使用 ELMAH 来满足您的要求。您可以让它在机器级别工作,这样您就不必在每个网站上设置自定义错误处理:

      http://code.google.com/p/elmah/

      您还可以在 web.config 中加入 标记,以确保它们被重定向到错误页面。 ELMAH 会确保您收到所有通知。

      【讨论】:

        【解决方案4】:

        您还可以利用 Global.asax 文件中的 Application_OnError 事件来捕获错误。然后,您可以按照上述 Ben R 进行操作。通过 Server.GetLastError() 例程捕获错误。

        【讨论】:

          【解决方案5】:

          您还可以构建一个名为“ErrorHandlingModule”的自定义模块,该模块将进入 HttpModule。

          public class ErrorHandlingModule : IHttpModule
          {
              public void Init(HttpApplication application)
              {
                  application.Error += new System.EventHandler(OnError);
              }
          
              public void OnError(object obj, EventArgs args)
              {
                  Exception ex = HttpContext.Current.Server.GetLastError();
                  //Log your error here or pick a funny message to display
                  HttpContext.Current.Server.ClearError();
                  HttpContext.Current.Response.Redirect("/Error.aspx", false);
              }
          }
          

          它看起来像这样。

          【讨论】:

            猜你喜欢
            • 2013-09-28
            • 1970-01-01
            • 2011-01-12
            • 1970-01-01
            • 2018-03-29
            • 2017-06-11
            • 1970-01-01
            • 2015-11-12
            • 2011-08-22
            相关资源
            最近更新 更多