Asp.net:意外错误处理-发送邮件并重定向到Error.aspx?

Asp.net:意外错误处理-发送邮件并重定向到Error.aspx?,asp.net,error-handling,Asp.net,Error Handling,在我非常大的网页(大约50页,20.000行代码)中,我只有极少数可能出现意外错误的情况,我没有正确地捕捉到这些情况 但为了我的安全: 有没有可能,给我发一封电子邮件(SMTP类已经准备好了,所以我只需要调用一个方法)并将每个未完成的错误重定向到一个特定的站点?(例如:Error.aspx)是的,您可以使用自定义错误页面捕获任何未处理的错误。您可以在该页面上编写代码,向您发送包含异常详细信息的错误 在您的Global.asax中创建一个应用程序错误方法并在那里处理错误。您可以使用Server.G

在我非常大的网页(大约50页,20.000行代码)中,我只有极少数可能出现意外错误的情况,我没有正确地捕捉到这些情况

但为了我的安全:
有没有可能,给我发一封电子邮件(SMTP类已经准备好了,所以我只需要调用一个方法)并将每个未完成的错误重定向到一个特定的站点?(例如:Error.aspx)

是的,您可以使用自定义错误页面捕获任何未处理的错误。您可以在该页面上编写代码,向您发送包含异常详细信息的错误


在您的Global.asax中创建一个应用程序错误方法并在那里处理错误。您可以使用Server.GetLastError()获取最后一个异常。

我认为更好的方法是编写自己的异常模块和处理程序。这种式样的东西

public sealed class ErrorCapture : IHttpModule
{

    #region IHttpModule Members

    public void Dispose()
    {
        //nothing here
    }

    public void Init(HttpApplication context)
    {
        context.Error += new EventHandler(context_Error);
    }

    void context_Error(object sender, EventArgs e)
    {
        // Do your implementation like send mail
        // Get Required details and use response.write for 
        // a good error msg display
        HttpApplication Application = (HttpApplication)sender;
        HttpServerUtility Server = Application.Server;
        HttpResponse Response = Application.Response;

        Exception error = Server.GetLastError();
        if (error.GetType().Equals(typeof(HttpUnhandledException)))
            error = error.InnerException;

        //your stuff

        Server.ClearError();//Do this
    }

    #endregion
}

使用customErrors重定向到错误页面

对于使用自定义类发送邮件,我建议您编写一个自定义asp.net healthmonitoring提供程序。 看看这篇文章: 它向你展示了你如何做到这一点