2012-04-24 30 views
3

我使用Respose.WritePage_Unload事件我,然後我得到的錯誤爲什麼我們無法在Page_Unload事件上使用Response.Write?

沒有獲得響應在這種情況下。

我可以知道我們爲什麼不能使用嗎?

protected void Page_Unload(object sender, System.EventArgs e) 
{ 
    Response.Write(" hi "); 
} 
+2

因爲頁面正在卸載?爲什麼你當時需要專門寫? – mellamokb 2012-04-24 13:13:08

+2

如果您想修改您的響應流,請在ASP頁面生命週期中選擇其他事件。 – qJake 2012-04-24 13:14:51

回答

4

這是因爲Unload事件在頁面被渲染後觸發。該頁面已完成,並且在前往瀏覽器的途中,不再有可寫入的響應流。

2

記住 - 在卸載階段,頁及其控件已經呈現,所以你不能做出響應流的進一步變化。如果您嘗試調用諸如Response.Write方法的方法,則該頁面將拋出exception

此時頁面​​已經呈現在HTML中,而HTML無法修改。儘管如此,所有頁面對象都可用。

參考ASP.NET page lifecycle

4

從MSDN文章the ASP.NET Page Lifecyle

在卸載階段,頁及其控件已經呈現, 所以你不能做出響應流的進一步變化。 如果您的 嘗試調用諸如Response.Write方法的方法,則頁面 將引發異常

所以你要做的是根據文檔實際上不支持。

這在邏輯上是有道理的。當頁面被卸載時,瀏覽器不需要的進一步響應,即頁面。這真的只是清理工作的地方。

一些常見的用例中也提到了在MSDN:

用戶控件:

...使用該事件對特定的控制,如關閉特定的控制,數據庫連接做最後的清理。

,以及該網頁作爲一個整體:

...使用這個事件做最後的清理工作,如關閉打開的文件和數據庫連接,或完成了日誌記錄或其他請求特定任務。

3

Unload事件發生在頁面被髮送回客戶端之後。現在寫回覆信息已經太遲了。

請參閱ASP.NET Page Life Cycle文檔。

相關問題