【问题标题】:The remote server returned an error: (550) File unavailable (e.g., file not found, no access) in .NET远程服务器返回错误:(550) .NET 中的文件不可用(例如,找不到文件,无法访问)
【发布时间】:2020-12-22 17:30:10
【问题描述】:

我正在尝试将图像上传到 FTP 服务器。但是我遇到了一个错误

远程服务器返回错误:(550) 文件不可用(例如,找不到文件,无法访问)。

这是我的代码:

public void Upload(string fileName, string base64, string path)
{
    var bytes = Convert.FromBase64String(base64);
    var uri = new Uri($"ftp://{Host}/{path}/{fileName}");
    var request = (FtpWebRequest)WebRequest.Create(uri);
    request.Method = WebRequestMethods.Ftp.UploadFile;
    request.UsePassive = false;
    request.Credentials = new NetworkCredential(Username, Password);
    request.ContentLength = bytes.Length;
    request.UseBinary = true;
    request.KeepAlive = false;

    using (var requestStream = request.GetRequestStream())
    {
        requestStream.Write(bytes, 0, bytes.Length);
        requestStream.Close();
    }

    using (var response = (FtpWebResponse)request.GetResponse())
    {
        if (response != null)
            response.Close();
    }
}

我的Host 是这样的:localhost:port-number。 该路径是一个名为Images 的文件夹。 所以我想将图像保存在localhost:port-number/Images,但我收到了那个错误。 当我从浏览器打开 FTP 点时,它工作正常,我可以看到内容。这里有什么问题?

【问题讨论】:

    标签: c# .net ftp ftp-client ftpwebrequest


    【解决方案1】:

    一般来说,将FtpWebRequest.UsePassive 设置为false 是个坏主意。坚持使用默认的true,除非您有充分的理由使用活动模式。

    阅读FTP connection modes 上的我的 文章以了解原因。


    服务器可能会返回带有550 代码的相关错误消息。但是 .NET 框架中的 FTP 实现将所有 FTP 状态代码转换为它自己的(本地化)消息。特别是代码 550 被翻译为“文件不可用”。这在某些情况下(可能像这个)隐藏了真正的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-13
      • 1970-01-01
      • 1970-01-01
      • 2013-07-02
      • 1970-01-01
      相关资源
      最近更新 更多