Разница между Server.Transfer и Response.Redirect

Server.Transfer vs Response.Redirect

Сервер и Ответ оба являются объектами в ASP.NET. Объект сервера предоставляет методы и свойства для различных задач, связанных с сервером. Transfer - это метод объекта Server, который отправляет информацию о текущем состоянии в другой файл .asp для обработки. Объект ответа описывает методы и свойства, связанные с ответом сервера. Redirect - это метод объекта Response, который отправляет сообщение в браузер, заставляя его подключиться к другому URL-адресу. Несмотря на то, что Server.Transfer и Response.Redirect могут использоваться для переноса пользователя с одной страницы на другую, они по-разному выполняют свои задачи..

Что такое Response.Redirect?

Redirect - это метод в объекте Response. Когда вызывается метод Response, он отправляет HTTP-код 302 и URL запрашиваемой веб-страницы в браузер пользователя. HTTP-код 302 информирует браузер пользователя о том, что запрошенный ресурс расположен по другому URL-адресу. Когда браузер получает код, он открывает ресурс в новом месте. Запрашиваемая веб-страница может находиться на том же сервере, что и страница, содержащая запрос, или она может находиться на каком-либо другом сервере. При запросе веб-страницы, находящейся на том же сервере, что и текущая страница, метод Response можно использовать следующим образом:

Response.Redirect ( «nextPage.html»);

При запросе веб-страницы, находящейся на другом сервере, метод Response можно использовать следующим образом:

Response.Redirect ( «http://www.newServer.com/newPage.aspx»);

Что такое Server.Transfer?

Как упоминалось ранее, Transfer - это метод объекта Server. Когда вызывается метод Transfer, исходный запрос изменяется для передачи на какую-либо другую страницу того же сервера. Когда новая страница запрашивается с помощью Server.Transfer, URL-адрес, отображаемый в веб-браузере пользователя, не изменяется. Это связано с тем, что передача происходит на стороне сервера, а браузер не знает о передаче. Используя вторую перегрузку для Server.Transfer (путь строки, bool preserveForm) и устанавливая второй параметр как true, опубликованные переменные формы и строки запроса можно сделать доступными для второй страницы.

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

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