我正在尝试通过FTP在C#中编程下载一个文件,下面是相关代码(显然是使用假的凭据和URI):
try
{
var request = FtpWebRequest.Create("ftp://ftp.mydomain.com/folder/file.zip");
request.Credentials = new NetworkCredential("username", "password");
using (var response = request.GetResponse())
{
...
}
}
catch (WebException we)
{
...
}异常在request.GetResponse()抛出,错误代码为550。问题不是凭据或URI,因为它们在IE中工作得很好,并且文件在IE中下载成功。我遗漏了什么?是否存在我应该使用的其他类型的凭据对象?request对象上是否有我没有设置的属性?任何帮助都将不胜感激。
发布于 2010-12-28 07:44:55
原来FTP根目录不一定与URL根目录相同。也许我混淆了术语,所以让我解释一下:在我的例子中,连接到ftp.mydomain.com已经是从/folder开始的,所以我的网址只需要是ftp://ftp.mydomain.com/file.zip。IE8知道如何消除原始路径中的冗余/folder部分,而FtpRequest类不知道,这就是为什么它可以在IE8中工作,但不能在C#代码中工作。
发布于 2012-02-20 23:56:35
在本地路径部分的开头添加另一个斜杠(在hostname:port之后):
var request = FtpWebRequest.Create("ftp://ftp.mydomain.com//folder/file.zip");这对我很有效。
发布于 2010-12-17 02:50:58
这就是我所使用的,我打赌.Method是您缺少的主要内容
request = (FtpWebRequest)FtpWebRequest.Create(address);
request.Credentials = new NetworkCredential("username", "password");
request.UsePassive = true;
request.UseBinary = true;
request.Proxy = null;
request.Method = WebRequestMethods.Ftp.DownloadFile;
FtpWebResponse dataResponce = (FtpWebResponse)request.GetResponse();https://stackoverflow.com/questions/4464271
复制相似问题