Server.Transfer
和Response.Redirect
和有什麼不一樣?Server.Transfer和Response.Redirect有什麼區別?
回答
Server.Transfer()
只適用於來自您網站的頁面,這意味着服務器開始從頭開始渲染新頁面。
Response.Redirect()
是一個正常的重定向,它適用於任何URL。
Response.Redirect向客戶端發送'302 Moved Temporarily'響應,客戶端瀏覽器將向該位置發出請求。
Server.Transfer將控件從服務器端的一個頁面傳輸到另一個頁面,因此原始請求和響應緩衝流保持原樣,因爲它們位於傳輸完成的位置。
這意味着Response.Redirect需要往返客戶端,但Server.Transfer不需要。另一個區別是Server.Transfer在瀏覽器中顯示爲原始url ...例如考慮Page1.aspx做一個server.transfer page2.aspx,在這種情況下,Page1.aspx顯示在地址欄中,即使它們實際上正在顯示Page2.aspx。如果改爲Page1.aspx做了Response.Redirect,那麼Page2.aspx就會顯示出來。
所以取決於你想要優化的Response.Redirect更好,如果你想支持正確的頁面書籤和Server.Transfers更好,如果你想最大限度地減少客戶端往返服務器。
噢,還有退房http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=15 它描述了這個要好得多的警告。
Server.Transfer爲您提供了將參數值設置到目標頁面的選項。
Response.Redirect should be used :
- 如果我們想請求重定向到同一 服務器或其他Web服務器
,如果我們不關心造成額外的往返到服務器上 每個請求
如果我們不需要保留Query String和Form Variables 原始請求
,如果我們希望我們的用戶能夠看到他 在他的瀏覽器重定向
Response.Redirect的是更加人性化的新的重定向URL,站點訪問者可以 書籤的頁面他們被重定向到。
Server.Transfer的,應使用:
- 如果我們想當前頁面請求的另一臺服務器
例,如果沒有轉移到另一個.aspx頁 同一臺服務器上你的服務器是 www.yahoo.com你不能使用服務器。轉移到移動到 www.microsoft.com - 如果我們想保留的服務器資源,避免不必要的 往返於服務器
- 如果我們想保留查詢字符串和表單變量 - 如果我們不需要以顯示我們重定向請求的真實URL在 用戶Web瀏覽器
- 1. 爲什麼不Server.Transfer爲什麼只有Response.Redirect
- 2. Response.Redirect(「http:// url」)和Response.Write(「REDIRECT = http:// url」)有什麼區別?
- 3. 有什麼區別`和$(Bash中有什麼區別?
- 4. ASP.NET性能:Server.Transfer(..)vs Response.Redirect(..)
- 5. 爲什麼Response.Redirect與新的RedirectResult()有區別?
- 6. 有什麼區別? :和||
- 7. &&和||有什麼區別?
- 8. 「/」和「/ *」有什麼區別?
- 9. 有什麼區別:。!和:r!?
- 10. ==和===有什麼區別?
- 11. Appender和〜有什麼區別?
- 12. $ @和$ *有什麼區別?
- 13. is和=有什麼區別?
- 14. #.00和#。##有什麼區別?
- 15. `==`和`is`有什麼區別?
- 16. '=='和'==='有什麼區別?
- 17. /和/#/有什麼區別?
- 18. | 0和~~有什麼區別?
- 19. `&`和`ref`有什麼區別?
- 20. ==和===有什麼區別?
- 21. ==和===有什麼區別?
- 22. `{}`和`[]`有什麼區別?
- 23. JavaScript和=== ===有什麼區別?
- 24. difftime和' - '有什麼區別?
- 25. =和==有什麼區別?
- 26. response.redirect和響應狀態301在asp中重定向有什麼區別?
- 27. xtype和別名有什麼區別?
- 28. Mixpanel:識別()和people.identify()有什麼區別?
- 29. 有什麼區別
- 30. 有什麼區別
真棒的答案! 我看到它的方式, Server.Transfer處理服務器端的請求 Response.Redirect從客戶端再次往返 – 2010-03-25 10:36:10
實際上,'Response.Redirect'發出一個「302 Moved Temporarily」。 304是「未修改」,它告訴瀏覽器使用它的緩存版本,否則發現。作爲一個興趣點,ASP.NET 4引入了「Response.RedirectPermanent」,它發佈了「301永久移動」。 – 2010-03-25 11:34:23
@Zhaph,關於.RedirectPermanent的詳細信息。做一個301並不是那麼多的代碼行,但一個捷徑仍然很好。 – 2010-03-25 23:35:10