Перенаправление на новую страницу в Asp.Net с помощью нескольких приемов - что произойдет с потоком, который вы запускали ранее. страница?

Я знаю, что есть несколько способов изменить текущую страницу в ASP.Net. Итак, при перенаправлении на новую страницу, что произойдет с потоком, который мы запускали в предыдущем. страница?


person odiseh    schedule 26.07.2009    source источник


Ответы (2)


Метод Response.Redirect использует исключение для выхода из текущего цикла создания страницы и отправляет страницу перенаправления обратно в ответ браузеру. Затем поток завершает работу с объектом Page и возвращается в пул, как и при завершении обычной страницы. Браузер обрабатывает страницу перенаправления и отправляет новый запрос на сервер, поэтому перенаправленная страница представляет собой полностью новый запрос, не имеющий прямого отношения к первому запросу.

Метод Server.Transfer завершит выполнение текущей страницы и продолжит работу с целевой страницей без обращения к серверу и обратно.

Метод Server.Execute выполнит целевую страницу, а затем вернется, чтобы продолжить выполнение остальной части кода на исходной странице.

person Guffa    schedule 26.07.2009
comment
+1 за отличный ответ, но не могли бы вы объяснить больше о том, что поток завершает объект Page и возвращается в пул, как когда обычная страница завершена? Кстати, фраза туда и обратно в веб-приложениях означает отправку данных на сервер и клиент. Я прав? - person odiseh; 26.07.2009

Он будет возвращен в пул потоков ASP.NET.

person Mitch Wheat    schedule 26.07.2009
comment
Я столкнулся с проблемой в этом отношении. Мне нужно перенаправить на конкретное состояние ошибки. Поэтому я делаю Server.Redirect. Но поскольку я останавливаю текущий поток при этом, возникает исключение, и страница переходит на страницу общей ошибки. Исключение: текущий поток прерван. В качестве обходного пути я позволил текущему потоку завершиться. Но я считаю, что это пустая трата ресурсов Comp. Какие-либо предложения? - person Ganesh R.; 26.07.2009
comment
@Ganesh R: Не могли бы вы показать нам свой код, может быть, в отдельном посте? - person Kb.; 26.07.2009
comment
Размещено: stackoverflow.com/questions/1185031/ - person Ganesh R.; 26.07.2009