3

我正在使用Respose.Write事件 Page_Unload,然后我收到错误

在这种情况下没有响应。

我可以知道为什么我们不能使用吗?

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

5 回答 5

4

来自ASP.NET Page Lifecyle上的 MSDN 文章:

在卸载阶段,页面及其控件已呈现,因此您无法对响应流进行进一步更改。如果您尝试调用诸如 Response.Write 方法之类的方法,页面将抛出异常

因此,根据文档,您尝试做的实际上是不受支持的。

这在逻辑上是有道理的。当页面被卸载时,浏览器不需要该页面的进一步响应。这实际上只是执行清理的地方。

MSDN 上也提到了一些常见的用例:

对于用户控件:

...使用此事件对特定控件进行最终清理,例如关闭特定于控件的数据库连接。

对于整个页面:

...使用此事件进行最终清理工作,例如关闭打开的文件和数据库连接,或完成日志记录或其他特定于请求的任务。

于 2012-04-24T13:13:19.640 回答
4

那是因为该Unload事件是在页面呈现后触发的。该页面已经完成,在前往浏览器的途中,不再有您可以写入的响应流。

于 2012-04-24T13:13:26.103 回答
3

Unload 事件发生在页面被发送回客户端之后。那时写响应为时已晚。

请参阅ASP.NET 页面生命周期文档。

于 2012-04-24T13:13:44.513 回答
2

请记住- 在卸载阶段,页面及其控件已被呈现,因此您无法对响应流进行进一步更改。如果您尝试调用诸如方法之类的Response.Write方法,页面将抛出一个exception.

那时页面已经以 HTML 呈现,并且无法修改 HTML。尽管如此,所有页面对象都是可用的。

请参阅ASP.NET 页面生命周期

于 2012-04-24T13:13:16.473 回答
2

阅读页面生命周期:http: //msdn.microsoft.com/en-us/library/ms178472.aspx

UnLoad 是在渲染之后出现的,所以此时您已经将所有可以输出到屏幕上。

于 2012-04-24T13:13:25.037 回答