首页 新闻 赞助 找找看

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

0
悬赏园豆:5 [待解决问题]

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

 

程序:

Response.Flush();
Response.End();

环境:IIS7.0以上  服务器 WIN2008R2  .NET3.5

王火火王堇的主页 王火火王堇 | 初学一级 | 园豆:187
提问于:2015-01-07 12:24
< >
分享
所有回答(2)
0

TCP连接断了

dudu | 园豆:31075 (高人七级) | 2015-01-07 12:39

支持(0) 反对(0) 王火火王堇 | 园豆:187 (初学一级) | 2015-01-07 13:29

@谢馥春-xiefuchun.net: 在 Response.Flush() 时,客户端关闭了TCP连接

支持(0) 反对(0) dudu | 园豆:31075 (高人七级) | 2015-01-07 13:48

@dudu: 那么应该如何处理呢?

支持(0) 反对(0) 王火火王堇 | 园豆:187 (初学一级) | 2015-01-07 13:53

@谢馥春-xiefuchun.net: 当前的信息太少,无法进行判断

支持(0) 反对(0) dudu | 园豆:31075 (高人七级) | 2015-01-07 14:12
0

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。就像数据库连接一样,用完就关闭连接。

王火火王堇 | 园豆:187 (初学一级) | 2015-05-27 09:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册