Почему возникает исключение Thread was being aborted при Response.Redirect("~")

Александр Злобин
Дата: 23.04.2010 12:29:56
Наконец то настроил на сайте запись лога ошибок. И обнаружил вот такую фигню. Эта запись возникает по несколько раз в день. Непонятно почему?

System.Threading.ThreadAbortException: Thread was being aborted.
at System.Threading.Thread.AbortInternal()
at System.Threading.Thread.Abort(Object stateInfo)
at System.Web.HttpResponse.End()
at System.Web.HttpResponse.Redirect(String url, Boolean endResponse)
at System.Web.HttpResponse.Redirect(String url)
at pay.btnActivate_Click(Object sender, EventArgs e) in e:\rooms\u164326\baldoid.ru\www\pay.aspx.cs:line 212

В строке 212 очень простая конструкция:
Response.Redirect("~")

В результате чего при таком раскладе может возникать такая ошибка?
Зритель с попкорном 5
Дата: 23.04.2010 12:37:54
Александр Злобин,

Может надо
Response.Redirect("~/")
Александр Злобин
Дата: 23.04.2010 12:39:56
Забыл добавить... эта ошибка возникает не при каждом выполнении кода, а очень-очень редко... но всё-таки... непонятно...
Zoria
Дата: 23.04.2010 13:06:52
Александр Злобин
Забыл добавить... эта ошибка возникает не при каждом выполнении кода, а очень-очень редко... но всё-таки... непонятно...


мсдн
oleginn
Дата: 23.04.2010 13:24:08
Response.Redirect("~/...") прерывает текущий Thread, а значит вызывает System.Threading.ThreadAbortException, поэтому при выполнении мы всегда будем попадать в блок catch, и если там пишутся логи, то соответсвенно эта ошибка будет зафиксирована. Как вариант проверять эксепшн является ли он System.Threading.ThreadAbortException и если да то писать в логи о том, что произошло прерыввание потока.
oleginn
Дата: 23.04.2010 13:26:47
или можно вызывать Response.Redirect("~/...", false). В этом случае прерывания не будет, но будет выполнятся код, находящийся за редиректом, что бывает часто не желательно
ShSerge
Дата: 23.04.2010 13:39:31
Zoria
Александр Злобин
Забыл добавить... эта ошибка возникает не при каждом выполнении кода, а очень-очень редко... но всё-таки... непонятно...


мсдн

Так что всё нормально. Так и должно быть.
Александр Злобин
Дата: 23.04.2010 14:24:44
СПАСИБО ВСЕМ ЗА НАУКУ!