ThreadAbortException возникает при использовании Response.End, Response.Redirect или Server.Transfer
Эта статья поможет устранить ошибку ThreadAbortException, возникающую при использовании Response.End
, Response.Redirect
или Server.Transfer
.
Исходная версия продукта: ASP.NET на платформа .NET Framework 4.5.2, ASP.NET в платформа .NET Framework 3.5 с пакетом обновления 1 (SP1)
Исходный номер базы знаний: 312629
Симптомы
При использовании Response.End
метода , Response.Redirect
или Server.Transfer
возникает исключение ThreadAbortException. Для перехвата try-catch
этого исключения можно использовать инструкцию .
Причина
Метод Response.End
завершает выполнение страницы и перемещает его на событие Application_EndRequest в конвейере событий приложения. Следующая строка кода Response.End
не выполняется.
Эта проблема возникает в методах иServer.Transfer
, Response.Redirect
поскольку оба метода вызывают Response.End внутренне.
Разрешение
Чтобы обойти эту проблему, используйте один из следующих методов:
Для
Response.End
вызовитеHttpContext.Current.ApplicationInstance.CompleteRequest
метод вместо обходаResponse.End
выполнения кода вApplication_EndRequest
событие .Для
Response.Redirect
используйте перегрузку Response.Redirect(String URL, bool endResponse), которая передает значение false для параметра endResponse, чтобы подавить внутренний вызовResponse.End
. Например:Response.Redirect ("nextpage.aspx", false);
Если вы используете это обходное решение, выполняется приведенный ниже
Response.Redirect
код.Для
Server.Transfer
используйтеServer.Execute
метод .
Хотя ASP.NET обрабатывает это исключение, для перехвата try-catch
этого исключения можно использовать инструкцию . Например:
try
{
Response.Redirect("nextpage.aspx");
}
catch (Exception ex)
{
Response.Write (ex.Message);
}
Добавьте точку останова в линию Response.Write
и обратите внимание, что эта точка останова достигнута. При изучении исключения обратите внимание, что возникает исключение ThreadAbortException.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по