2010-03-25 2 views

ответ

2

Server.Transfer() работает только со страницами вашего сайта, это означает, что сервер начинает рендеринг новой страницы с нуля.

Response.Redirect() - обычное перенаправление, которое работает с любым URL-адресом.

12

Response.Redirect отправляет ответ «302 Moved Temporarily» клиенту, затем клиентский браузер отправляет запрос в это место.

Server.Transfer переносит управление с одной страницы на другую со стороны сервера, поэтому исходные буфера для запросов и ответов остаются такими, какими они находятся в момент, когда передача выполнена.

Это означает, что Response.Redirect требует двусторонней поездки к клиенту, но Server.Transfer этого не делает. Другое отличие заключается в том, что Server.Transfer появляется в браузере как исходный url ... например. рассмотрим, что Page1.aspx делает server.transfer на page2.aspx. В этом случае страница_паска отображается в адресной строке, даже если на самом деле они отображаются на странице2.aspx. Если вместо этого Page1.aspx выполнил Response.Redirect, то будет показан файл page2.aspx.

Так что в зависимости от того, что вы хотите оптимизировать Response.Redirect лучше, если вы хотите правильно поддерживать закладку закладок, а Server.Transfers лучше, если вы хотите минимизировать круглые поездки клиента на сервер.

Ой, и у меня есть http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=15 Это описывает это намного лучше с оговорками.

+0

замечательный ответ! Способ, которым я это вижу, Server.Transfer обрабатывает запрос на стороне сервера. Response.Redirect выполняет другую обратную поездку от клиента. –

+1

На самом деле, 'Response.Redirect' выдает сообщение« 302 Moved Temporarily ». 304 «Не изменен», в котором браузер указывает, что он использует свою кешированную версию, в противном случае - на месте. В качестве точки интереса ASP.NET 4 представляет «Response.RedirectPermanent», который выдает сообщение «301 Moved Permanentently». –

+1

@ Zhaph, хорошая информация о .RedirectPermanent. Выполнение 301 - это не так много строк кода, но ярлык по-прежнему хорош. –

-2

Server.Transfer дает вам возможность установить значения параметров на целевую страницу.

0
Response.Redirect should be used : 

  • , если мы хотим, чтобы перенаправить запрос на тот же сервер или на какой-либо другой веб-сервер
  • если мы не будем заботиться о причинении дополнительных туда и обратно на сервер по каждого запроса

  • Если нам не нужно сохранять строки запроса и формы с первоначальный запрос

  • , если мы хотим, чтобы наши пользователи могли видеть новую перенаправлена ​​URL, где он перенаправляются в своем браузере

  • Response.Redirect является более удобным, так как посетитель сайта может закладки страница, которая они перенаправляются.

    Server.Transfer следует использовать:


  • , если мы хотим, чтобы передать запрос текущей страницы на другую страницу .aspx на том же сервере не на другой сервер
    если ваш сервер www.yahoo.com вы не можете использовать сервер.Передача перейти к www.microsoft.com
  • , если мы хотим сохранить ресурсы сервера и избежать ненужных туда и обратно на сервер
  • , если мы хотим сохранить строки запроса и переменные формы -Если нам не нужны чтобы показать реальный URL-адрес, где мы перенаправили запрос в пользователей. Веб-браузер
Смежные вопросы