我在Respose.Write
事件中使用Page_Unload
,然后收到错误
在此背景下无法获得响应。
我可以知道为什么我们不能使用?
protected void Page_Unload(object sender, System.EventArgs e)
{
Response.Write(" hi ");
}
答案 0 :(得分:4)
来自the ASP.NET Page Lifecyle上的MSDN文章:
在卸载阶段,页面及其控件已呈现, 因此您无法对响应流进行进一步更改。 如果你 尝试调用一个方法,如Response.Write方法,页面 将抛出异常。
因此,根据文档,您尝试做的事实上是不受支持的。
这在逻辑上是有道理的。在卸载页面时,浏览器无需来自该页面的进一步响应。这实际上就是执行清理的地方。
MSDN上也提到了一些常见的用例:
对于用户控件:
...使用此事件对特定控件进行最终清理,例如关闭特定于控件的数据库连接。
对于整个页面:
...使用此事件执行最终清理工作,例如关闭打开的文件和数据库连接,或完成日志记录或其他特定于请求的任务。
答案 1 :(得分:4)
这是因为在呈现页面后触发了Unload
事件。该页面已经完成,在前往浏览器的路上,您不再可以写入响应流。
答案 2 :(得分:3)
在将页面发送回客户端之后发生Unload事件。现在写入“响应”为时已晚。
请参阅ASP.NET Page Life Cycle文档。
答案 3 :(得分:2)
记住 - 在卸载阶段,页面及其控件已呈现,因此您无法对响应流进行进一步更改。如果您尝试调用Response.Write
方法等方法,该页面将抛出exception
。
此时页面已经以HTML格式呈现,HTML无法修改。尽管如此,所有页面对象都可用。
答案 4 :(得分:2)
了解页面生命周期:http://msdn.microsoft.com/en-us/library/ms178472.aspx
UnLoad在渲染后出现,所以此时你已经尽可能地输出到屏幕上了。