Я понимаю (сейчас), что Response.Redirect () и Response.End () генерируют исключение ThreadAbortException как дорогой способ уничтожения текущего потока обработки для эмуляции поведения методов ASP Classic Classic Response.End () и Response.Redirect .
Тем не менее.
В нашем приложении время от времени кажется, что исключительная ситуация слишком велика. Например, у нас есть страница, которая вызывается из клиентского javascript для возврата небольшой строки для отображения на странице.
protected void Page_Load(object sender, EventArgs e)
{
// Work out some stuff.
Response.Write(stuff);
Response.End();
}
Обычно это работает, но иногда мы получаем пузырек исключения до уровня пользовательского интерфейса и получаем часть текста исключения, отображаемого на странице.
Точно так же, где у нас есть:
// check the login is still valid:
if(!loggedin) {
Response.Redirect("login.aspx");
}
В некоторых случаях пользователь перенаправляется на login.aspx, в других он получает страницу с ошибкой ASP.NET и дамп стека (из-за того, как настроены наши серверы разработки).
т.е. в некоторых случаях response.redirect генерирует исключение вплоть до ВМЕСТО выполнения перенаправления. Зачем? Как мы можем это остановить?