У меня работает приложение Asp. Net Web Forms. NET Framework 4.7.2 с конвейером Owin.
В обработчике Application_Error я добавляю код в конце обработчик для перенаправления на пользовательскую страницу ошибки при возникновении необработанного исключения. Я прочитал много сообщений на этом сайте, которые предполагают, что достаточно вызвать Response.Redirect("~/ErrorPage.aspx")
, но документация Microsoft для метода HttpResponse.Redirect указывает в разделе замечаний, что:
Перенаправить вызовы End , который выдает исключение ThreadAbortException по завершении. Это исключение отрицательно влияет на производительность веб-приложений. Поэтому мы рекомендуем вместо этой перегрузки использовать перегрузку HttpResponse.Redirect (String, Boolean) и передать false для параметра endResponse, а затем вызвать метод CompleteRequest .
Пара вопросов:
1) В обработчике Application_Error есть причина, почему я не должен перенаправлять, как показано ниже?
Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
' Other logging code etc removed for brevity
Server.ClearError()
Response.Redirect("~/ErrorPage.aspx", endResponse:=False)
CompleteRequest()
End Sub
2) В обработчиках событий страницы (например, Page_Load ), события нажатия кнопки и т. д. c ... есть ли причина, по которой мне не следует звонить endResponse:=False
, а затем CompleteRequest()
? Или, другими словами, при каких обстоятельствах вы определенно хотели бы убедиться, что endResponse
было установлено на True
?