2 Stimmen

Was kann dazu führen, dass Application_Error nicht aufgerufen wird?

Für die letzten 2 Wochen habe ich einen Fall, dass ich nicht herausfinden kann, vielleicht haben Sie Jungs bereits durch das gleiche Problem oder hören / lesen darüber und kann mir helfen.

Ich habe ein ASP.NET-Projekt, das ich auf meiner Maschine und anderen Maschinen gut laufen, jedes Mal, wenn ich versuche, die QueryString zu temperieren, bekomme ich einen Fehler, der von der System.Exception ausgelöst wird

Problem ist, in diesem bestimmten Computer (witch ist in Holland) die Application_Error nie fängt die Exception, es speichert die Exception-Nachricht in das Protokoll (wie in meiner Anwendung getan werden sollte), aber es nicht "brechen" die Web-Anwendung ... es einfach weiter!

Wie und wodurch kann dies möglich werden?


als Beispiel, dies ist mein Webseite (HttpCache kann nicht auf diese Weise aufgerufen werden, sondern ist nur zu zeigen, dass ich das Web.HttpCache-Objekt verwende)

if( Request.QueryString["user"] != HttpCache["MYAPP-user"] ) {
   myApp.DebugWrite("User was tempered.");
   throw System.Exception("User was tempered.");
}

und in global.asax Ich habe

...

void Application_Error(object sender, EventArgs e)
{
    // Code that runs when an unhandled error occurs
    if (Server.GetLastError() != null)
    {
        Exception objErr = Server.GetLastError().GetBaseException();
        String url = Request.Url.ToString();
        String msg = objErr.Message;
        String trc = objErr.StackTrace.ToString();

        Response.Clear();

        StringBuilder html = new StringBuilder();
        // fill up html with html code in order to present a nice message
        Response.Write(html.ToString()); 

        Server.ClearError();
        Response.Flush();
        Response.End();
    }
}

...

auf meinen Testrechnern erhalte ich immer die html-Datei mit der Fehlermeldung sowie die Meldung im Protokoll... auf diesem speziellen Rechner sehe ich nur den Fehler im Protokoll, aber die Anwendung fortsetzen !!!

web.config ist genau die gleiche wie in allen Maschinen und diese Webanwendung läuft auf .NET 2.0

Was kann das sein?

-2voto

azamsharp Punkte 18941

Kommentieren Sie die Teile Response und Server.ClearError() in Ihrem Code aus:

 //Response.Clear();

                StringBuilder html = new StringBuilder();
                // fill up html with html code in order to present a nice message
                Response.Write(html.ToString());

                //Server.ClearError();
                //Response.Flush();
                //Response.End();

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X