2012-06-14 6 views
0

Будет ли отправлен 301 сервер через server.transfer?Server.Transfer() и http 301

PageA.aspx:

protected void Page_Load(object sender, EventArgs e) 
    { 
     Response.Status = "301 Moved Permanently"; 
     Server.Transfer("/pageB.aspx"); 
    } 
+2

Вы не могли бы попробовать это сами? (Кроме того, нет, я так не думаю). – Ryan

ответ

1

Если вам нужно перенаправить после Server.Transfer, вы можете сделать это вручную:

this.Response.Status = "301 Moved Permanently"; 
this.Response.RedirectLocation = "Default2.aspx"; 

Детали:

Server.Transfer не вызывает перенаправления

См. MSDN:

Server.Transfer действует как эффективная замена метода Response.Redirect. Response.Redirect указывает браузеру запрашивать другую страницу. Поскольку перенаправление заставляет новый запрос страницы, браузер делает два запроса на веб-сервер, поэтому веб-сервер обрабатывает дополнительный запрос. В IIS 5.0 появилась новая функция Server.Transfer, которая переносит выполнение на другую страницу ASP на сервере. Это позволяет избежать дополнительного запроса, что приводит к повышению общей производительности системы, а также к лучшему опыту пользователя.

И на самом деле я просто попробовал ваш код, и он не работает.

Он сделал послал 301 статус:

HTTP/1.1 301 Moved Permanently 
Server: ASP.NET Development Server/10.0.0.0 
Date: Thu, 14 Jun 2012 18:54:22 GMT 
X-AspNet-Version: 4.0.30319 
Cache-Control: private 
Content-Type: text/html; charset=utf-8 
Content-Length: 626 
Connection: Close 

Это repsonse от Скрипач.

Но он не работает

Я думаю, что причина, почему он не работает, потому что когда вы отправляете статус 3xx с сервера вам необходимо отправить обратно URL, используемых для перенаправления (который вызывает второй запрос на сервер). Это делается автоматически при использовании Response.Redirect, но Server.Transferне, так что вы отправляете статус переадресации с сервера без URL, поэтому он не работает

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

  • Нет связанных вопросов^_^