Die Benutzer unserer Anwendung herunterladen einen Anhang mindestens einmal in zwei Sekunden während des Tages.Response.End() vs HttpContext.Current.ApplicationInstance.CompleteRequest()
Zurück Szenario:
Wir Response.End wurden mit(), um die Verbindung zum Client abzubrechen, nachdem der Benutzer eine Anlage herunterlädt. Da wir Leistungsprobleme hatten, begannen wir, Ausnahmen zu protokollieren, und eine der am häufigsten wiederholten war die Thread-Abbruch-Ausnahme. Da wir den Anhang von einem Web-Service bekommen, müssen wir etwas aufräumen und wir haben die Aufräumarbeiten in Try-Catch-Finally Block. Nach einigen Nachforschungen habe ich verstanden, dass jeder Code nach Response.End() nicht ausgeführt wird, selbst wenn er sich in Blockade befindet. Ist das richtig?
Aktuelles Szenario:
Ich habe den Faden in Stapelüberlauf über Response.End() lesen ist schädlich, und es muss nur verwendet werden, wenn es wirklich notwendig ist, so entschied ich mich Httpcontext zu verwenden ... .CompleteRequest() stattdessen. Mit diesem Code wird die erforderliche Bereinigung durchgeführt, aber das HTML, das gerendert wird, wird an den heruntergeladenen Anhang angehängt. Ich habe versucht, Render und RaisePostBackEvent, die im selben Artikel vorgeschlagen wurden, zu übergehen, aber das Problem besteht immer noch. Jede Idee, wie dieses Problem gelöst werden könnte, 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();
Bitte prägen Sie Ihre Titel nicht mit "C#" und so weiter. Dafür sind die Tags da. –
Sicher. Das tut mir leid. Ich habe gerade angefangen, hier zu posten. Ich werde darauf achten, das nicht zu wiederholen. – user1396468