Logning af exceptions i ASP.NET applikation

Det er en god ide at logge undtagelser (Exceptions), der opstår på dit webhotel. En god måde at gøre dette på er at implementere en handler på applikationsniveau via global.asax og Application_Error event'et.

Nedenstående er et lille eksempel på implementering af en Application Error Event handler, som sender en formateret undtagelse besked via E-mail. Koden skal placeres i filen "global.asax"


protected void Application_Error(Object sender, EventArgs e)
{
    StringBuilder sb = new StringBuilder(400);
    sb.Append("Application Error\n\n");

    // Get user IP
    sb.Append("User IP :");
    sb.Append(Request.UserHostAddress);

    // Get the path of the page
    sb.Append("\n\nError in Path :");
    sb.Append(Request.Path);

    // Get the QueryString along with the Virtual Path
    sb.Append("\n\nError Raw Url :");
    sb.Append(Request.RawUrl);

    // Create an Exception object from the Last error 
    // that occurred on the server
    Exception myError = Server.GetLastError();

    // Get the error message
    sb.Append("\n\nError Message :");
    sb.Append(myError.Message);

    // Source of the message
    sb.Append("\n\nError Source :");
    sb.Append(myError.Source);

    // Stack Trace of the error
    sb.Append("\n\nError Stack Trace :");
    sb.Append(myError.StackTrace);

    // inner exception
    if (myError.InnerException != null)
    {
        sb.Append("\n\nInner exception : ");
        sb.Append(myError.InnerException);
    }

    // Method where the error occurred
    sb.Append("\n\nError TargetSite :");
    sb.Append(myError.TargetSite);

    // Email Exception
    SmtpClient client = new SmtpClient();
    MailMessage mail = new MailMessage("webadmin@firma.dk", "webadmin@firma.dk");

    mail.Subject = String.Format("MySite: Application Error. ({0})", 
        Request.UserHostAddress);

    mail.Body = sb.ToString();

    client.Send(mail);
}


SmtpClient
indstillinger skal konfigurers via web.config:

<system.net>
    <mailSettings>
        <smtp from="admin@mysite.com">
            <network host="localhost" port="25" />    
        </smtp>    
    </mailSettings>
</system.net>


Når en undtagelse (Exception) E-mail sendes til administrator, bør brugeren få vist en pæn fejlside. Dette kan konfigureres således via web.config:


<customErrors mode="On">
    <error statusCode="500" redirect="~/Pages/Errors/Fejl500.aspx" />
</customErrors>
Relaterede søgeord: web.configprogrammering
Alle priser er i DKK inkl. moms