Я видел несколько вопросов по этой проблеме, но я не нашел подходящего ответа на вопрос. Изначально я использовал следующий код после написания JSON в функцииКак обрабатывать Thread был прерван Исключение vb.net/C#?
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.SuppressContent = True;
HttpContext.Current.ApplicationInstance.CompleteRequest();
получал Server cannot append header after HTTP headers have been sent
исключение.
Так что я изменил код
try {
HttpContext.Current.Response.Write(Data);
HttpContext.Current.Response.End();
} catch (System.Threading.ThreadAbortException exc) {
try {
//Sends the response buffer
HttpContext.Current.Response.Flush();
// Prevents any other content from being sent to the browser
HttpContext.Current.Response.SuppressContent = true;
//Directs the thread to finish, bypassing additional processing
HttpContext.Current.ApplicationInstance.CompleteRequest();
} catch (Exception ex) {
//Log Exception
}
}
Все эти кода в функции (позволяет говорить) writeData()
и его называют функцией называется CallWriteData
. Теперь исключение было успешно обработано в функции WriteData()
, но его бросание исключение Thread was being aborted
в родительской функции CallWriteData
.
Чтобы быть честным, это не серьезная проблема в моем проекте, но было бы неплохо, если я исправлю эту неприятную проблему. Также это исключение в CallWriteData
не каждый раз (иногда его успешно обрабатывают).
Ну, я собираюсь предположить, что нить, которая прерывается, является потоком http. Если он был прерван в вызове writeData(), почему вы ожидаете, что какие-либо последующие операции в одном потоке будут работать? Если writeData() уже обрабатывает исключение, зачем вы его обрабатываете снова? – iheanyi
u означает, почему я обрабатываю его в 'CallWriteData'? – Binny
Да. Если вы вызываете writeData() из CallWriteData(), чтобы заботиться о записи данных и обрабатывать все связанные исключения, почему вы перестраиваете исключение и обрабатываете его второй раз в CallWriteData()? – iheanyi