2016-03-23 18 views
0

Ich verwende benutzerdefinierte ASP.NET-Fehlerseite in meiner Anwendung. Im Folgenden finden Sie die Datei web.config Eintrag für Custom TagServer.ClearError() mit Seitenaktualisierung

<customErrors mode="On" defaultRedirect="Error.aspx" redirectMode="ResponseRewrite" /> 

Es folgt der Code-Snippet auf Error.aspx Seite

protected void Page_Load(object sender, EventArgs e) 
    { 
     if(!IsPostBack) 
     { 
      Exception ex = Server.GetLastError(); 
      if(ex != null) 
      { 
       CommonUtils.SendException(ex.Message.ToString(), ex.StackTrace.ToString()); 
       Server.ClearError(); 
      } 
     } 
    } 

Wenn "ex" nicht null ist, Code wird die Ausnahme E-Mail senden. Das funktioniert gut.

Nach dem Senden der E-Mail möchte ich alle Fehler löschen, so dass keine E-Mail gesendet wird, wenn Benutzer die Schaltfläche zum Aktualisieren drücken. Aber selbst nach der Verwendung von Server.ClearError gibt es einen Rückgabewert von Server.GetLastError() Wenn die Seite zurückgesendet wird.

+0

Warum behalten Sie dies in der 'ApplicationError()' Methode von Global.asax und verwenden Sie server.transfer(), um zur Fehlerseite zu navigieren – Webruster

Antwort

0

Der Code sollte so etwas neu geschrieben werden: Global.asax.cs

protected void Application_Error(object sender, EventArgs e) 
{ 
    Exception ex= Server.GetLastError(); 
    CommonUtils.SendException(ex.Message.ToString(), ex.StackTrace.ToString()); 
} 

Und das Ereignis Page_Load der Fehlerseite sollte dann leer sein. Wie Sie in diesem MS-Artikel lesen können: https://support.microsoft.com/en-us/kb/306355 Server.ClearErrors stoppt die Fehlerausbreitung, wenn Sie es auf der Seite aufrufen, wird der Fehler nicht vom Application_Error-Ereignis behandelt. Wenn Sie es nicht in Application_Error aufrufen, sucht die Anwendung nach der customErrors-Deklaration in der web.config-Umleitung zu dieser Seite.

Wenn Sie die Fehler rufen Server.ClearError oder Trap nicht in der Page_Error oder Application_Error Ereignishandler, wird der Fehler auf der Grundlage der Einstellungen im Abschnitt der Datei Web.config behandelt. In diesem Abschnitt können Sie eine Umleitungsseite als Standardfehlerseite (defaultRedirect) angeben oder eine bestimmte Seite basierend auf dem HTTP-Fehlercode angeben, der ausgelöst wird. Sie können diese Methode verwenden, um die Fehlermeldung anzupassen, die der Benutzer empfängt.

Wenn ein Fehler auftritt, der in keiner der vorherigen Ebenen in Ihrer Anwendung gefangen ist, wird diese benutzerdefinierte Seite angezeigt. Dieser Abschnitt veranschaulicht, wie die Global.asax-Datei geändert wird, so dass Server.ClearError nie aufgerufen wird. Daher wird der Fehler in der Datei Web.config als der letzte Punkt behandelt, um den Fehler aufzufangen.

Verwandte Themen