Контекст. Ответ. Конец () и Поток прерывался

Я пытаюсь закрыть использование ответа Context.Response.End но получите ошибку "Thread was being aborted".

Как я правильно закрываю ответ, не инициировав исключение?

try {
   Context.Response.Clear();
   Context.Response.ContentType = "text/html"; 
   //Context.Response.ContentType = "application/json";
   JsonObjectCollection collection = new JsonObjectCollection();
   collection.Add(new JsonNumericValue("resultcode", 1));
   collection.Add(new JsonStringValue("sourceurl", exchangeData.cUrl));
   collection.Add(new JsonStringValue("filename", fileName));
   collection.Add(new JsonStringValue("filesize", fileSize));
   collection.Add(new JsonStringValue("fileurl", Common.GetPDFURL + outputFileName));
   JsonUtility.GenerateIndentedJsonText = true;
   Context.Response.Write(collection);
  try {
     Context.Response.End();
  } catch (ThreadAbortException exc) {
     // This should be first catch block i.e. before generic Exception
     // This Catch block is to absorb exception thrown by Response.End
  }
} catch (Exception err) {

}

Решенный один, код должен быть похожим

try {
  Context.Response.End();
} catch (ThreadAbortException err) {

}
catch (Exception err) {
}
24
задан Rob Kielty 10 July 2012 в 02:00
поделиться

1 ответ

Есть ли конкретная причина, по которой вы не используете context.ApplicationInstance.CompleteRequest () вместо этого?

Этот метод закорачивает конвейер ASP.NET (за исключением события EndRequest) без выброса исключение ThreadAbortException , поэтому вам не понадобится дополнительный блок try / catch , и вы также получите более высокую производительность.

26
ответ дан 28 November 2019 в 23:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: