2012-04-02 149 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;,并且现在可以上传和下载作品。