2012-01-15 6 views
4

Я нашел много тем на Server.Transfer VS Response.Redirect, но ни один из них не объяснил разницу между Server.Transfer и Response. Перепишите.Когда использовать Server.Transfer или Response.Rewrite?

Насколько я знаю, они используют один и тот же метод для навигации пользователя: Так в чем же разница между ними и когда они должны использоваться?

+0

Возможный дубликат [Какой из них лучше Server.Transfer и Response.Redirect] (http://stackoverflow.com/questions/5151439/which-one-is-better-server-transfer-and-response-redirect) – slugster

+0

Основная разница заключается в том, что Response.Redirect обращается к веб-браузеру, чтобы перенаправить его на новый URL, тогда как Server.Transfer только начинает обработку новой страницы на сервере без кругового путешествия. –

+1

Просто нехорошо закрывать для ответа с -1 голосом и без принятого вопроса. Возможно, мы могли бы получить хороший принятый ответ здесь, так как это лучший вопрос и закрыть другой для этого? (Или, возможно, * приличный * дубликат может быть связан ...) –

ответ

0

Response.Redirect отправит переадресацию заголовков от сервера к клиенту и вызовет другой запрос на новый адрес (всего: 2 запроса).

Однако Server.Transfer вызовет только 1 запрос клиент-сервер, а URL-адрес в адресной строке браузера не изменится, поскольку браузер не получил никаких признаков для перенаправления, все это произошло на стороне сервера - в отличие от Response.Redirect ,

Надеюсь, что это поможет.

0

Передача на другую страницу с использованием Server.Transfer сохраняет ресурсы сервера. Вместо того, чтобы сообщать браузеру о перенаправлении, он просто меняет «фокус» на веб-сервере и передает запрос. Это означает, что вы не получаете столько запросов HTTP, что, таким образом, снижает нагрузку на ваш веб-сервер и ускоряет работу ваших приложений.

Но обратите внимание: поскольку процесс «передачи» может работать только на тех сайтах, которые работают на сервере, вы не можете использовать Server.Transfer для отправки пользователя на внешний сайт. Только Response.Redirect может это сделать.

Во-вторых, Server.Transfer поддерживает исходный URL-адрес в браузере. Это может действительно помочь оптимизировать методы ввода данных, хотя это может привести к путанице при отладке.

Это еще не все: метод Server.Transfer также имеет второй параметр - preserveForm. Если вы установите для этого значение значение True, используя оператор, такой как Server.Transfer («WebForm2.aspx», True), существующая строка запроса и любые переменные формы будут по-прежнему доступны для страницы, на которую вы переходите.

Например, если ваш WebForm1.aspx имеет элемент управления TextBox, называемый TextBox1, и вы перешли в WebForm2.aspx с параметром preserveForm, установленным в True, вы сможете получить значение исходного элемента управления TextBox, указав Request.Form ("TextBox1").

Итак, вкратце: Response.Redirect просто сообщает браузеру посетить другую страницу. Server.Transfer помогает уменьшить запросы сервера, поддерживает URL-адрес одинаково и, с небольшим количеством ошибок, позволяет передавать строку запроса и формы переменных.

Смежные вопросы