Я пытаюсь закрыть использование ответа 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) {
}
Есть ли конкретная причина, по которой вы не используете context.ApplicationInstance.CompleteRequest ()
вместо этого?
Этот метод закорачивает конвейер ASP.NET (за исключением события EndRequest) без выброса исключение ThreadAbortException
, поэтому вам не понадобится дополнительный блок try
/ catch
, и вы также получите более высокую производительность.