我使用Respose.Write
上Page_Unload
事件我,然後我得到的錯誤爲什麼我們無法在Page_Unload事件上使用Response.Write?
沒有獲得響應在這種情況下。
我可以知道我們爲什麼不能使用嗎?
protected void Page_Unload(object sender, System.EventArgs e)
{
Response.Write(" hi ");
}
我使用Respose.Write
上Page_Unload
事件我,然後我得到的錯誤爲什麼我們無法在Page_Unload事件上使用Response.Write?
沒有獲得響應在這種情況下。
我可以知道我們爲什麼不能使用嗎?
protected void Page_Unload(object sender, System.EventArgs e)
{
Response.Write(" hi ");
}
這是因爲Unload
事件在頁面被渲染後觸發。該頁面已完成,並且在前往瀏覽器的途中,不再有可寫入的響應流。
記住 - 在卸載階段,頁及其控件已經呈現,所以你不能做出響應流的進一步變化。如果您嘗試調用諸如Response.Write
方法的方法,則該頁面將拋出exception
。
此時頁面已經呈現在HTML中,而HTML無法修改。儘管如此,所有頁面對象都可用。
從MSDN文章the ASP.NET Page Lifecyle:
在卸載階段,頁及其控件已經呈現, 所以你不能做出響應流的進一步變化。 如果您的 嘗試調用諸如Response.Write方法的方法,則頁面 將引發異常。
所以你要做的是根據文檔實際上不支持。
這在邏輯上是有道理的。當頁面被卸載時,瀏覽器不需要的進一步響應,即頁面。這真的只是清理工作的地方。
一些常見的用例中也提到了在MSDN:
用戶控件:
...使用該事件對特定的控制,如關閉特定的控制,數據庫連接做最後的清理。
,以及該網頁作爲一個整體:
...使用這個事件做最後的清理工作,如關閉打開的文件和數據庫連接,或完成了日誌記錄或其他請求特定任務。
在頁面生命週期讀了起來:http://msdn.microsoft.com/en-us/library/ms178472.aspx
卸載自帶的渲染之後,所以在這一點上,你已經輸出的所有,你可以在屏幕上。
Unload事件發生在頁面被髮送回客戶端之後。現在寫回覆信息已經太遲了。
請參閱ASP.NET Page Life Cycle文檔。
因爲頁面正在卸載?爲什麼你當時需要專門寫? – mellamokb 2012-04-24 13:13:08
如果您想修改您的響應流,請在ASP頁面生命週期中選擇其他事件。 – qJake 2012-04-24 13:14:51