C# FTP,GetResponse(),遠(yuǎn)程服務(wù)器返回錯(cuò)誤
更新時(shí)間:2009年06月19日 23:29:53 作者:
C# FTP,GetResponse(),遠(yuǎn)程服務(wù)器返回錯(cuò)誤:(550) 文件不可用(例如,未找到文件,無法訪問文件)
FtpWebRequest類實(shí)現(xiàn)ftp功能的一般過程
1、創(chuàng)建一個(gè)FtpWebRequest對(duì)象,指向ftp服務(wù)器的uri
2、設(shè)置ftp的執(zhí)行方法(上傳,下載等)
3、給FtpWebRequest對(duì)象設(shè)置屬性(是否支持ssl,是否使用二進(jìn)制傳輸?shù)龋?
4、設(shè)置登錄驗(yàn)證(用戶名,密碼)
5、執(zhí)行請(qǐng)求
6、接收相應(yīng)流(如果需要的話)
7、如果沒有打開的流,則關(guān)閉ftp請(qǐng)求
其中一些重要的屬性如下:
·Credentials - 指定登錄ftp服務(wù)器的用戶名和密碼。
·KeepAlive - 指定連接是應(yīng)該關(guān)閉還是在請(qǐng)求完成之后關(guān)閉,默認(rèn)為true
·UseBinary - 指定文件傳輸?shù)念愋汀S袃煞N文件傳輸模式,一種是Binary,另一種是ASCII。兩種方法在傳輸時(shí),字節(jié)的第8位是不同的。ASCII使用第8位作為錯(cuò)誤控制,而Binary的8位都是有意義的。所以當(dāng)你使用ASCII傳輸時(shí)要小心一些。簡單的說,如果能用記事本讀和寫的文件用ASCII傳輸就是安全的,而其他的則必須使用Binary模式。當(dāng)然使用Binary模式發(fā)送ASCII文件也是非常好的。
·UsePassive - 指定使用主動(dòng)模式還是被動(dòng)模式。早先所有客戶端都使用主動(dòng)模式,而且工作的很好,而現(xiàn)在因?yàn)榭蛻舳朔阑饓Φ拇嬖冢瑢?huì)關(guān)閉一些端口,這樣主動(dòng)模式將會(huì)失敗。在這種情況下就要使用被動(dòng)模式,但是一些端口也可能被服務(wù)器的防火墻封掉。不過因?yàn)閒tp服務(wù)器需要它的ftp服務(wù)連接到一定數(shù)量的客戶端,所以他們總是支持被動(dòng)模式的。這就是我們?yōu)槭裁匆褂帽粍?dòng)模式的原意,為了確保數(shù)據(jù)可以正確的傳輸,使用被動(dòng)模式要明顯優(yōu)于主動(dòng)模式。(譯者注:主動(dòng)(PORT)模式建立數(shù)據(jù)傳輸通道是由服務(wù)器端發(fā)起的,服務(wù)器使用20端口連接客戶端的某一個(gè)大于1024的端口;在被動(dòng)(PASV)模式中,數(shù)據(jù)傳輸?shù)耐ǖ赖慕⑹怯蒄TP客戶端發(fā)起的,他使用一個(gè)大于1024的端口連接服務(wù)器的1024以上的某一個(gè)端口)
·ContentLength - 設(shè)置這個(gè)屬性對(duì)于ftp服務(wù)器是有用的,但是客戶端不使用它,因?yàn)镕tpWebRequest忽略這個(gè)屬性,所以在這種情況下,該屬性是無效的。但是如果我們?cè)O(shè)置了這個(gè)屬性,ftp服務(wù)器將會(huì)提前預(yù)知文件的大小(在upload時(shí)會(huì)有這種情況)
·Method - 指定當(dāng)前請(qǐng)求是什么命令(upload,download,filelist等)。這個(gè)值定義在結(jié)構(gòu)體WebRequestMethods.Ftp中。
當(dāng)你遇到:"遠(yuǎn)程服務(wù)器返回錯(cuò)誤:(550) 文件不可用(例如,未找到文件,無法訪問文件)"時(shí),可能是如下原因:
1.URL路徑不對(duì),看看有沒有多加空格,或者大小寫問題
2.權(quán)限是否足
3.需要反復(fù)連接的時(shí)候,如GetFileList,需要遞歸獲得所有文件,keepAlive則設(shè)成false,一個(gè)查詢請(qǐng)求完了后就關(guān)閉.
1、創(chuàng)建一個(gè)FtpWebRequest對(duì)象,指向ftp服務(wù)器的uri
2、設(shè)置ftp的執(zhí)行方法(上傳,下載等)
3、給FtpWebRequest對(duì)象設(shè)置屬性(是否支持ssl,是否使用二進(jìn)制傳輸?shù)龋?
4、設(shè)置登錄驗(yàn)證(用戶名,密碼)
5、執(zhí)行請(qǐng)求
6、接收相應(yīng)流(如果需要的話)
7、如果沒有打開的流,則關(guān)閉ftp請(qǐng)求
其中一些重要的屬性如下:
·Credentials - 指定登錄ftp服務(wù)器的用戶名和密碼。
·KeepAlive - 指定連接是應(yīng)該關(guān)閉還是在請(qǐng)求完成之后關(guān)閉,默認(rèn)為true
·UseBinary - 指定文件傳輸?shù)念愋汀S袃煞N文件傳輸模式,一種是Binary,另一種是ASCII。兩種方法在傳輸時(shí),字節(jié)的第8位是不同的。ASCII使用第8位作為錯(cuò)誤控制,而Binary的8位都是有意義的。所以當(dāng)你使用ASCII傳輸時(shí)要小心一些。簡單的說,如果能用記事本讀和寫的文件用ASCII傳輸就是安全的,而其他的則必須使用Binary模式。當(dāng)然使用Binary模式發(fā)送ASCII文件也是非常好的。
·UsePassive - 指定使用主動(dòng)模式還是被動(dòng)模式。早先所有客戶端都使用主動(dòng)模式,而且工作的很好,而現(xiàn)在因?yàn)榭蛻舳朔阑饓Φ拇嬖冢瑢?huì)關(guān)閉一些端口,這樣主動(dòng)模式將會(huì)失敗。在這種情況下就要使用被動(dòng)模式,但是一些端口也可能被服務(wù)器的防火墻封掉。不過因?yàn)閒tp服務(wù)器需要它的ftp服務(wù)連接到一定數(shù)量的客戶端,所以他們總是支持被動(dòng)模式的。這就是我們?yōu)槭裁匆褂帽粍?dòng)模式的原意,為了確保數(shù)據(jù)可以正確的傳輸,使用被動(dòng)模式要明顯優(yōu)于主動(dòng)模式。(譯者注:主動(dòng)(PORT)模式建立數(shù)據(jù)傳輸通道是由服務(wù)器端發(fā)起的,服務(wù)器使用20端口連接客戶端的某一個(gè)大于1024的端口;在被動(dòng)(PASV)模式中,數(shù)據(jù)傳輸?shù)耐ǖ赖慕⑹怯蒄TP客戶端發(fā)起的,他使用一個(gè)大于1024的端口連接服務(wù)器的1024以上的某一個(gè)端口)
·ContentLength - 設(shè)置這個(gè)屬性對(duì)于ftp服務(wù)器是有用的,但是客戶端不使用它,因?yàn)镕tpWebRequest忽略這個(gè)屬性,所以在這種情況下,該屬性是無效的。但是如果我們?cè)O(shè)置了這個(gè)屬性,ftp服務(wù)器將會(huì)提前預(yù)知文件的大小(在upload時(shí)會(huì)有這種情況)
·Method - 指定當(dāng)前請(qǐng)求是什么命令(upload,download,filelist等)。這個(gè)值定義在結(jié)構(gòu)體WebRequestMethods.Ftp中。
當(dāng)你遇到:"遠(yuǎn)程服務(wù)器返回錯(cuò)誤:(550) 文件不可用(例如,未找到文件,無法訪問文件)"時(shí),可能是如下原因:
1.URL路徑不對(duì),看看有沒有多加空格,或者大小寫問題
2.權(quán)限是否足
3.需要反復(fù)連接的時(shí)候,如GetFileList,需要遞歸獲得所有文件,keepAlive則設(shè)成false,一個(gè)查詢請(qǐng)求完了后就關(guān)閉.
您可能感興趣的文章:
- C#如何控制IIS動(dòng)態(tài)添加刪除網(wǎng)站詳解
- C#部署數(shù)據(jù)庫及IIS站點(diǎn)
- IIS下調(diào)用證書出現(xiàn)異常的解決方法 (C#)
- C# WebService發(fā)布以及IIS發(fā)布
- C#實(shí)現(xiàn)獲取IIS站點(diǎn)及虛擬目錄信息的方法
- C#開發(fā)windows服務(wù)實(shí)現(xiàn)自動(dòng)從FTP服務(wù)器下載文件
- FtpHelper實(shí)現(xiàn)ftp服務(wù)器文件讀寫操作(C#)
- c# 在windows中操作IIS設(shè)置FTP服務(wù)器的示例
相關(guān)文章
Asp.net core利用dynamic簡化數(shù)據(jù)庫訪問
這篇文章介紹了Asp.net core利用dynamic簡化數(shù)據(jù)庫訪問的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07WPF實(shí)現(xiàn)雷達(dá)掃描圖的繪制詳解
這篇文章主要介紹了如何利用WPF實(shí)現(xiàn)雷達(dá)掃描圖的繪制,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)或工作有一定幫助,需要的可以參考一下2022-05-05Entity?Framework使用DBContext實(shí)現(xiàn)增刪改查
這篇文章介紹了Entity?Framework使用DBContext實(shí)現(xiàn)增刪改查的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-10-10ASP.NET MVC5驗(yàn)證系列之客戶端驗(yàn)證
這篇文章主要為大家詳細(xì)介紹了ASP.NET MVC5驗(yàn)證系列之客戶端驗(yàn)證,感興趣的小伙伴們可以參考一下2016-07-07ASP.NET Global.asax應(yīng)用程序文件簡介
Global.asax 文件,有時(shí)候叫做 ASP.NET 應(yīng)用程序文件,提供了一種在一個(gè)中心位置響應(yīng)應(yīng)用程序級(jí)或模塊級(jí)事件的方法。2009-03-03IdnentiyServer使用客戶端憑據(jù)訪問API的實(shí)例代碼
這篇文章主要介紹了IdnentiyServer-使用客戶端憑據(jù)訪問API的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2018-10-10