2012-01-15 12 views
4

我在Server.Transfer VS Response.Redirect上發現了很多話題,但都沒有解釋Server.Transfer和Response之間的區別。 重寫何時使用Server.Transfer或Response.Rewrite?

據我所知,他們使用相同類型的方法來瀏覽用戶:那麼他們之間的區別和他們什麼時候應該使用?

+0

可能重複[哪一個更好Server.Transfer和Response.Redirect](http://stackoverflow.com/questions/5151439/which-one-is-better-server-transfer-and-response-redirect) – slugster 2012-01-15 06:27:31

+0

關鍵的區別在於Response.Redirect一次返回到Web瀏覽器以告訴它重定向到一個新的URL,而Server.Transfer只是開始在服務器上處理一個新的頁面而不進行往返。 – 2012-01-15 06:31:07

+1

它只是感覺不對,關閉-1票和沒有接受的問題的答案。也許我們可以在這裏得到一個很好的答案,因爲這是一個更好的問題,並且爲此關閉另一個答案? (或者一個*體面*重複可以被鏈接...) – 2012-01-15 07:03:21

回答

0

Response.Redirect會將重定向頭從服務器發送到客戶端,並且會導致對新的url的另一個請求(總數:2個請求)。

但是,Server.Transfer只會導致1個客戶端 - 服務器請求,並且瀏覽器地址欄中的網址不會更改,因爲瀏覽器沒有得到任何重定向的標誌,它都發生在服務器端 - 不像Response.Redirect

希望有所幫助。

0

使用Server.Transfer傳輸到另一個頁面可節省服務器資源。而不是告訴瀏覽器重定向,它只是改變Web服務器上的「焦點」並傳輸請求。這意味着你不會收到很多HTTP請求,因此可以減輕Web服務器的壓力,並使應用程序運行得更快。

但要小心:因爲「傳輸」進程只能在服務器上運行的站點上運行,所以不能使用Server.Transfer將用戶發送到外部站點。只有Response.Redirect可以做到這一點。

其次,Server.Transfer在瀏覽器中保留原始URL。這可以真正幫助簡化數據輸入技術,儘管在調試時可能會造成混淆。

這還不是全部:Server.Transfer方法還有第二個參數 - 「preserveForm」。如果將此設置爲True,則使用諸如Server.Transfer(「WebForm2.aspx」,True)之類的語句,現有查詢字符串和任何表單變量仍然可用於要傳輸到的頁面。

例如,如果您的WebForm1.aspx具有名爲TextBox1的TextBox控件,並且您將preserveForm參數設置爲True,並將其傳輸到WebForm2.aspx,則可以通過引用檢索原始頁面TextBox控件的值的Request.Form( 「TextBox1中」)。

因此,簡單地說:Response.Redirect只是告訴瀏覽器訪問另一個頁面。 Server.Transfer有助於減少服務器請求,使URL保持不變,並且通過一些小小的錯誤處理,可以傳輸查詢字符串和表單變量。

相關問題