C# FTP上傳文件報550異常解決方案


最近做項目,要用到FTP上傳文件和下載文件。

然后就用FtpWebRequest類寫個上傳和下載的程序。

主要是對EMS物流這一塊,每天定時上傳禮品配送的信息,然后定時下載生成好的物流信息。

就是在上傳的時候,遇到一個很怪異的問題。本地測試沒有任務問題,但是放到服務器上問題就來了。

主要是在服務器上,上傳以后就報異常,而且EMS FTP服務器也有這個文件,就是沒有數據。

一直報異常550,連接超時,然后在網上找原因啊,多數是說地址是否正確,有沒有權限之類的。

本身FtpWebRequest超時默認是5分鍾的,但是沒有到5分鍾就報異常了。對着網上找到的資料一點一點的設置,根本就不行。

好吧,以上都解決不了,那就從服務器找起吧,查看事件啊,沒有一點有用的信息。想想可能是防火牆的問題,准備讓網管到機房把物理防火牆先停掉。

但是吧,機房不是每天能進的,決定先從代碼找起。看看每個屬性的設置,對着MSDN一點一點的找。

最后在FtpWebRequest 的UsePassive屬性找到的原因,雖然VS里面有很好的智能提示功能, 但是提示的信息很簡短。

看MSDN的備注有句話是這樣描述的:如果 UsePassive 被設置為 true,FTP 服務器可能不會發送文件的大小,而且下載進度可能始終為零。如果 UsePassive 被設置為 false,則防火牆可能會引發警報並阻止文件下載。

我在寫代碼的時候,設置了False,所以,防火牆根本就不讓我去讀取文件的內容。設置成True,文件很快就上傳成功了。

注意:如果設置成True,FTP服務器不會發送文件的大小,下載進度也可能始終為零。這個最好的解決辦法,還是在防火牆上進行設置吧。


免責聲明!

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



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