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指定瀏覽器請求不同的頁面。由於重定向強制新的頁面請求,瀏覽器向Web服務器發出兩個請求,所以Web服務器處理額外的請求。 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
從Fiddler的repsonse。
但它不工作
我覺得爲什麼它不工作的原因,是因爲當你從服務器發送3xx狀態,你需要發回用於重定向的URL(這將導致第二請求到服務器)。當您使用Response.Redirect
這是自動完成的,但Server.Transfer
不所以你從服務器發送一個重定向狀態沒有,這就是爲什麼它不工作
你不能這樣嘗試自己的網址是什麼? (另外,不,我不這麼認爲。) – Ryan