我正在尝试通过 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 中工作正常并且文件下载在那里成功。我错过了什么?我应该使用其他类型的凭据对象吗? request
对象上是否有我没有设置的属性?任何帮助将不胜感激。
最佳答案
事实证明,FTP 根不一定与 URL 根相同。也许我混淆了术语,所以让我解释一下:在我的例子中,连接到 ftp.mydomain.com 已经从/folder 开始,所以我的 URL 只需要是 ftp://ftp.mydomain.com/file.zip . IE8 知道如何消除原始路径中的冗余/folder 部分,而 FtpRequest 类则不知道,这就是为什么它在 IE8 中有效但在 C# 代码中无效。
关于C# FTP 550 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4464271/