mysql 80070057_远程主机关闭了连接。错误代码是 0x80070057,与远程主机通信时发生错误。错误代码是 0x80070057...

远程主机关闭了连接。错误代码是 0x80070057,与远程主机通信时发生错误。错误代码是 0x80070057

突然在异常错误日志中看到这个错误,虽然在测试中发现不影响流的传输,但是不代表没错误,解决方法如下

原理引用下面的文章:

http://hi.baidu.com/yore2003/item/c09da4adc18a1d278819d35a

Response.Flush();

Response.End();//结束文件下载

但是程序在运行时会报出“正在中止线程”的错误,可以确定的是引起错误的代码就是Response.End();

所以需要删除此方法。

在IIS 5.5下这样做问题就解决了,不过在IIS 7.0 下又会报出另外一个错误“与远程主机通信时发生错误。错

误代码是 0x800704CD。”

在网上翻查了一翻资料后,终于找到了解决方法:就是将Response.End();换成Response.Close();

总结一下,帮助对Response.Close的解释是关闭到客户端的连接。对Response.End的解释是停止该页的执行,并引发Application_EndRequest。

也就说用Response.End程序就直接停止后面的工作了转而触发Application_EndRequest,那么当程序在后

面还有代码需要运行时,程序就会抛出ThreadAbortException的异常。还有需要了解的就是end方法在不抛

出异常时还会调用flush的方法。

接着来,close方法是关闭了连接,也就说程序顺利执行完了所有代码后关闭了连接。

对 于只运行flush后报出的“与远程主机通信时发生错误”,我的理解是当执行了flush后在底层马上开始向客户端发送数据,但是flush貌似只能指示 程序开始连接发送,却没有停止关闭的标识,导致程序报出异常。当然这是在IIS 7.0下会出错(可能在IIS 7.0 开始在调用flush后需要显示关闭socket连接)。

所以以后再在用完flush后最好加上close。就像数据库连接一样,用完就关闭连接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值