Server.Transfer Vs. Response.Redirect

В чем разница между Server.Transfer и Response.Redirect?

  • Каковы преимущества и недостатки каждого?
  • Когда один уместен над другим?
  • Когда один не подходит?
вопрос задан 22.10.2008
kedar kamthe
3577 репутация

18 ответов


  • 218 рейтинг

    Response.Redirect просто отправляет сообщение (HTTP 302) в браузер.

    Server.Transfer происходит, когда браузер ничего не знает, браузер запрашивает страницу, но сервер возвращает содержимое другой.

    ответ дан CMS, с репутацией 572469, 22.10.2008
  • 88 рейтинг

    Response.Redirect() отправит вас на новую страницу, обновит адресную строку и добавит ее в историю браузера. В вашем браузере вы можете нажать кнопку назад.

    Server.Transfer() не меняет адресную строку. Вы не можете нанести ответный удар.

    Я использую Server.Transfer(), когда не хочу, чтобы пользователь видел, куда я иду. Иногда на странице типа «загрузка».

    В противном случае я всегда буду использовать Response.Redirect().

    ответ дан Christian Payne, с репутацией 5980, 22.10.2008
  • 28 рейтинг

    Ответ. Перенаправление перенаправляет страницу на другую страницу после того, как первая страница прибывает к клиенту. Так что клиент знает перенаправление.

    Сервер. Перевод завершает текущее исполнение страницы. Клиент не знает перенаправление. Это позволяет передавать строку запроса и переменные формы.

    Так что это зависит от ваших потребностей, чтобы выбрать, что лучше.

    ответ дан Canavar, с репутацией 40509, 6.02.2009
  • 6 рейтинг

    Передача полностью на стороне сервера. Адресная строка клиента остается постоянной. Некоторая сложность в передаче контекста между запросами. Очистка и перезапуск обработчиков страниц могут быть дорогостоящими, поэтому сделайте перевод на ранней стадии разработки e. г. в HttpModule во время BeginRequest. Внимательно прочитайте документы MSDN, протестируйте и поймите новые значения HttpContext. Запрос - особенно в сценариях Postback. Мы обычно используем Сервер. Перенос по ошибочным сценариям.

    Перенаправление завершает запрос со статусом 302 и ответом на обратную сторону на стороне клиента с использованием внутренней исключительной ситуации (незначительное попадание на сервер - зависит от того, сколько вы выполняете в день). Затем клиент переходит на новый адрес. Адресная строка браузера & amp; обновления истории и т. д. Клиент оплачивает стоимость дополнительного туда-обратно - стоимость варьируется в зависимости от времени ожидания. В нашем бизнесе мы перенаправили , много , мы написали наш собственный модуль, чтобы избежать стоимости исключений.

    ответ дан stephbu, с репутацией 4900, 22.10.2008
  • 5 рейтинг

    Ответ. Перенаправление обходится дороже, поскольку добавляет дополнительную поездку на сервер, чтобы выяснить, куда идти.

    Сервер. Передача более эффективна, однако она может немного вводить пользователя в заблуждение, поскольку URL-адрес не изменяется физически.

    По моему опыту, разница в производительности не была достаточно значительной, чтобы использовать последний подход

    ответ дан deadbug, с репутацией 1596, 22.10.2008
  • 4 рейтинг

    Сервер. Передача не меняет URL в клиентском браузере, поэтому браузер фактически не знает, что вы перешли на другой обработчик на стороне сервера. Отклик. Redirect сообщает браузеру перейти на другую страницу, поэтому URL в заголовке заголовка изменяется.

    Сервер. Передача происходит немного быстрее, поскольку она позволяет избежать одного обращения к серверу, но неизменное изменение URL-адреса может быть как хорошим, так и плохим, в зависимости от того, что вы пытаетесь сделать.

    ответ дан krosenvold, с репутацией 51204, 6.02.2009