首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# FTP 550错误

C# FTP 550错误
EN

Stack Overflow用户
提问于 2010-12-17 02:45:23
回答 6查看 9.9K关注 0票数 3

我正在尝试通过FTP在C#中编程下载一个文件,下面是相关代码(显然是使用假的凭据和URI):

代码语言:javascript
复制
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对象上是否有我没有设置的属性?任何帮助都将不胜感激。

EN

回答 6

Stack Overflow用户

发布于 2010-12-28 07:44:55

原来FTP根目录不一定与URL根目录相同。也许我混淆了术语,所以让我解释一下:在我的例子中,连接到ftp.mydomain.com已经是从/folder开始的,所以我的网址只需要是ftp://ftp.mydomain.com/file.zip。IE8知道如何消除原始路径中的冗余/folder部分,而FtpRequest类不知道,这就是为什么它可以在IE8中工作,但不能在C#代码中工作。

票数 7
EN

Stack Overflow用户

发布于 2012-02-20 23:56:35

在本地路径部分的开头添加另一个斜杠(在hostname:port之后):

代码语言:javascript
复制
var request = FtpWebRequest.Create("ftp://ftp.mydomain.com//folder/file.zip");

这对我很有效。

票数 4
EN

Stack Overflow用户

发布于 2010-12-17 02:50:58

这就是我所使用的,我打赌.Method是您缺少的主要内容

代码语言:javascript
复制
        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();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4464271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档