簡體   English   中英

使用Server.Transfer時是否再次執行整個Asp.Net生命周期?

[英]When Using Server.Transfer is the entire Asp.Net life-cycle executed again?

我知道Server.Transfer不會回程到請求客戶端。

我無法學到的是,控制是否只是直接傳遞給您要傳輸的新請求處理程序,或者是否或者是否再次執行整個請求生命周期。

我假設使用傳輸URL再次執行整個生命周期,但想驗證是這種情況。

這是我通過實驗發現的。

使用Server.Transfer ,不會再次運行整個請求生命周期。

如果您編寫自己的模塊,將其掛鈎到請求生命周期,並從該模塊調用Server.Transfer ,將跳過請求生命周期的其余部分,並立即開始頁面生命周期。

完成傳輸頁面生命周期后,請求生命周期會通過其拆除事件進行回收。 請注意,拆除事件中的HtppContext將是您轉移的原始事件。 也就是說,URL和QueryString值將與原始請求相同,而不是您傳輸到的頁面的URL和QueryString值。

Server.Transfer會修改HttpContext.Request對象,以便在您轉移到的頁面的頁面生命周期中包含新的URL和QueryString信息。

如果您轉移到不是頁面但基於文本的資源(例如something.xml),則該頁面的內容將與其編碼設置為text / html的內容完全相同。

如果您轉移到不是頁面且不基於文本的資源(例如something.pdf),則會拋出HttpException錯誤。 即使您已為此資源定義了自定義處理程序,也會發生這種情況。

它剛剛傳遞,狀態完好無損。 雖然頁面生命周期將針對您要轉移到的頁面運行,但請求生命周期不會再次運行。

http://msdn.microsoft.com/en-us/library/ms525800(v=vs.90).aspx

Server.Transfer充當Response.Redirect方法的有效替代品。 Response.Redirect指定瀏覽器請求不同的頁面。 由於重定向會強制執行新的頁面請求,因此瀏覽器會向Web服務器發出兩個請求,因此Web服務器會處理額外的請求。 IIS 5.0引入了一個新功能Server.Transfer,它將執行轉移到服務器上的不同ASP頁面。 這樣可以避免額外的請求,從而提高整體系統性能,並提供更好的用戶體驗。

這個鏈接也很有幫助 -
http://www.developer.com/net/asp/article.php/3299641/ServerTransfer-Vs-ResponseRedirect.htm

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM