代码之家  ›  专栏  ›  技术社区  ›  deadbug

ASP.NET和IIS6:捕获所有应用程序错误

  •  3
  • deadbug  · 技术社区  · 17 年前

    我们的团队遗留的ASP 3.0 web应用程序能够通过在IIS的“自定义错误”选项卡中设置自定义错误文件来利用全局错误文件。我找不到类似的解决方法ASP.NET应用程序。

    有没有人知道有没有一种方法可以让错误.aspx“将捕获整个应用程序池的错误的页(例如)?目标是避免在每个应用程序的全局错误处理程序中添加自定义代码。。。。

    非常感谢您的指导!

    5 回复  |  直到 17 年前
        1
  •  1
  •   SaaS Developer    17 年前

    您可以添加 <customErrors defaultRedirect="[url]"></customErrors>

    只需记住在编辑机器配置文件,它将影响该计算机上的所有应用程序。

        2
  •  1
  •   Ben R    17 年前

    检查您的应用程序错误方法全球.asax.cs文件。

    您可以使用以下方法在此处获取错误的详细信息:

    Exception myError = Server.GetLastError();
    Exception baseException = myError.GetBaseException();
    
        3
  •  1
  •   Micky McQuade    17 年前

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

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

    然后,还可以将<customErrors>标记合并到web.config文件以确保它们被重定向到错误页。ELMAH会负责确保所有事情都通知你。

        4
  •  0
  •   Donn Felker    17 年前

        5
  •  0
  •   Maxime Rouiller    17 年前

    您还可以构建一个名为“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);
        }
    }
    

    它看起来像这样。

    推荐文章