Будет ли отправлен 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");
}
Будет ли отправлен 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");
}
Если вам нужно перенаправить после 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, поэтому он не работает
Вы не могли бы попробовать это сами? (Кроме того, нет, я так не думаю). – Ryan