Response.End () vs HttpContext.Current.ApplicationInstance.CompleteRequest () [duplizieren]

Diese Frage hat hier bereits eine Antwort:

Wird Response.End () als schädlich angesehen? 8 Antworten

Die Benutzer unserer Anwendung laden tagsüber mindestens alle zwei Sekunden einen Anhang herunter.

Vorheriges Szenario:

Wir haben Response.End () verwendet, um die Verbindung zum Client abzubrechen, nachdem der Benutzer einen Anhang heruntergeladen hat. Da wir Leistungsprobleme hatten, haben wir begonnen, Ausnahmen zu protokollieren, und eine der am häufigsten auftretenden war die Ausnahmebedingung "Thread-Abbruch". Da wir den Anhang von einem Webdienst erhalten, müssen wir einige Aufräumarbeiten durchführen und hatten die Aufräumarbeiten im Try-Catch-finally-Block. Nach einigen Recherchen habe ich verstanden, dass Code nach Response.End () nicht ausgeführt wird, selbst wenn er sich in finally-Block befindet. Ist das richtig?

Aktuelles Szenario:

Ich habe den Thread im Stapelüberlauf über Response.End () gelesen, der schädlich ist, und er muss nur verwendet werden, wenn er wirklich benötigt wird. Deshalb habe ich mich stattdessen für HttpContext .... CompleteRequest () entschieden. Mit diesem Code wird die erforderliche Bereinigung durchgeführt, aber das gerenderte HTML wird an den heruntergeladenen Anhang angehängt. Ich habe versucht, die in demselben Artikel vorgeschlagenen Optionen Render und RaisePostBackEvent zu überschreiben, das Problem besteht jedoch weiterhin. Jede Idee zur Behebung dieses Problems wäre hilfreich.

Code:

HttpContext.Current.Response.Clear();

Response.ClearContent();

Response.ClearHeaders();

Response.AddHeader("Content-Disposition", "attachment; filename=" +   
filename);
Response.AddHeader("Content-Length", fileContent.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.BinaryWrite(fileContent);
Response.Flush();

Antworten auf die Frage(2)

Ihre Antwort auf die Frage