2012-04-02 118 views
1

我試圖從ftp服務器讀取一個txt文件,並得到一個「550找不到文件」。錯誤,即使我是%100確定該文件在那裏。FtpWebRequest:550找不到文件錯誤

這裏是URI我已經試過了變化:

ftp://server/MySubFolder/MyFile.txt 
ftp://server/%2fMySubFolder/MyFile.txt 
ftp://server/MySubFolder/%2fMyFile.txt 
ftp://server/%2fMySubFolder/%2fMyFile.txt 
ftp://server/%2f/MySubFolder/MyFile.tx 
ftp://server/MySubFolder/%2f/MyFile.txt 
ftp://server/%2f/MySubFolder/%2f/MyFile.txt 

他們都返回相同的結果頁面:

200 Type set to I. 
200 PORT command successful. 
550 The system cannot find the path specified. 

這裏是我想要的代碼:

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(file); 
request.Method = WebRequestMethods.Ftp.DownloadFile; 
request.Credentials = new NetworkCredential(username, password); 

FtpWebResponse response = (FtpWebResponse)request.GetResponse(); 

Stream responseStream = response.GetResponseStream(); 
StreamReader reader = new StreamReader(responseStream); 

string content = reader.ReadToEnd(); 

reader.Close(); 
response.Close(); 

我也嘗試在創建我的FtpWebRequest對象之前嘗試調用SetMethodRequiresCWD,但它沒有幫助。

我的應用程序是一個.NET 4.0客戶端配置文件Windows服務。

我很感激任何幫助。

+1

您是否在瀏覽器中嘗試過相同的URL,並且它在那裏工作? – JamieSee 2012-04-02 16:07:25

+0

是的,它確實有效。 – dstr 2012-04-02 18:14:06

回答

2

像這樣解決了這個問題:服務運行的服務器是一個Hyper-X虛擬機。不知何故虛擬機就像一個代理。我在我的請求中添加了request.Proxy = null;,並且現在可以上傳和下載作品。