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