Akzeptierte Möglichkeit zum Verhindern der Ausnahme "Der ferne Host hat die Verbindung geschlossen"

8

Ich bekomme fortwährend die folgende Ausnahme, die dadurch verursacht wird, dass ein Benutzer einen Download initiiert hat und folglich fehlschlägt (oder abgebrochen wird):

  

Fehlermeldung: Der Remote-Host wurde geschlossen   die Verbindung. Der Fehlercode ist   0x80072746. Stack Trace: um   System.Web.Hosting.ISAPIWorkerRequestInProcForIIS6.FlushCore (Byte []   Status, Byte [] Header, Int32   keepConnected, Int32 Gesamtkörpergröße,   Int32 numBodyFragments, IntPtr []   bodyFragments, Int32 []   bodyFragmentLengths, Int32   doneWithSession, Int32 finalStatus,   Boolescher & amp; asynchron) an   System.Web.Hosting.ISAPIWorkerRequest.FlushCachedResponse (Boolean   isFinal) um   System.Web.Hosting.ISAPIWorkerRequest.FlushResponse (Boolean   finalFlush) bei

Ich habe im ganzen Internet gesucht, und fand einen interessanten Artikel , aber es scheint keine endgültige Antwort zu geben, da dies der beste Weg ist, um das Auffüllen der Protokolle zu verhindern.

Der Benutzer sieht keinen Fehler, und es gibt kein tatsächliches Problem in der App, wie es nur in Situationen außerhalb seiner Kontrolle auftritt (Benutzer bricht Download oder Verlust der Verbindung ab), aber es muss einen Weg geben, dies zu verhindern Eine Ausnahme wird gemeldet.

Ich hasse es, es zu sagen, aber ich bin versucht, nach dieser Ausnahme zu suchen, und leere Fänge blockieren seinen Arsch - aber das lässt mich fühlen wie ein dreckiger Programmierer.

Also - Was ist die akzeptierte Methode um zu verhindern, dass diese Ausnahme mein Postfach füllt?

    
m.edmondson 15.04.2011, 15:40
quelle

3 Antworten

2

Sie können nicht verhindern, dass ein Remote-Host etwas schließt.

Und in einigen Protokollen ist dies die normale (oder zumindest akzeptierte) Art, sich zu verabschieden.

Sie müssen also mit dieser spezifischen Ausnahme umgehen.

    
Henk Holterman 15.04.2011, 15:54
quelle
6

Der Fehler tritt auf, wenn Sie versuchen, eine Antwort an den Client zu senden, die Verbindung jedoch getrennt wurde. Sie können dies überprüfen, indem Sie in Response.Redirect einen Haltepunkt festlegen oder wo immer Sie Daten an den Client senden, warten, bis Visual Studio den Haltepunkt erreicht, und dann die Anforderung in IE abbrechen (mit dem x in der Adressleiste). Dies sollte dazu führen, dass der Fehler auftritt.

Um den Fehler zu erfassen, können Sie Folgendes verwenden:

%Vor%

Oder in C # 6 können Sie Exception-Filter verwenden, um zu verhindern, dass der Fehler erneut ausgegeben wird:

%Vor%

Dies ist eine bessere Debug-Erfahrung, da es bei der Anweisung aufhört, die Ausnahme mit dem aktuellen Status zu werfen, und alle lokalen Variablen beibehalten werden, anstatt auf dem Wurf innerhalb des catch-Blocks.

    
Greg Bray 10.04.2014 15:28
quelle
1

Aus praktischer Sicht ist es nichts Schlimmes daran, einen Download aufgrund eines toten Computers oder einer getöteten Websitzung abzubrechen, daher ist das Abfangen von Ausnahmen von entfernten Hosts vollkommen akzeptabel.

    
Petesh 15.04.2011 15:53
quelle