遠程主機關閉了連接。錯誤代碼是 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。就像數據庫連接一樣,用完就關閉連接。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM