2009-02-27 17 views
2

下面是完整的错误消息:在VS2005中调试时,是什么原因导致System.Web.HttpException在Page.Flush上出现错误代码0x80070057?

的类型 “System.Web.HttpException”异常发生在 System.Web.dll中但在 用户代码

附加信息没有被处理的:远程的 主机关闭了连接。错误 代码是0x80070057。

和违规代码:

char[] buffer = oPage.HTML.HTML.ToCharArray(); 
Page.Response.Write(buffer, 0, buffer.Length); 
Page.Response.Flush(); 
Page.Response.End(); 

的oPage.HTML.HTML是由我们的应用程序使用的自定义页面对象的字符串。 Page.Flush()上的异常触发器,似乎是良性的 - 我只是打“继续”,一切都很顺利。这绝不会在运行时出现。

我追了很多,很多谷歌打了许多兔子洞,什么也没找到。 Visual Studio 2005,Vista Ultimate(IIS7)。

+0

如果立即由End()成功,则不需要Flush()? – 2009-02-27 00:22:20

+0

@Chetan:很可能,但这是在大型应用程序的每个页面中使用的页面上的遗留代码。我想删除它,但我是个懦夫。我目前的解决方法是在我的工作副本上注释它,并且在本地没有问题。 – Ishmael 2009-02-27 00:27:17

回答

10

我一直在处理这个相同的错误一段时间了,我的理解是当Flush被调用时,在另一端必须有连接,否则就会抛出这个错误。在编写网页时,很容易陷入一种“失火”的模式,但当客户端断开连接时(在这种调试情况下,您是客户端),无法将刷新到

有两个解决方案,我发现这个:

  1. 裹Response.Flush和捕获异常。
  2. 在调用flush之前检查Response.IsClientConnected。

我不是100%确定第二个......我仍然在检查那一个。

祝你好运!

相关问题