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

我正在尝试将图像上传到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,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点时,它可以正常工作,并且可以看到内容。怎么了?

iCMS 回答:远程服务器返回错误:(550).NET中文件不可用(例如,文件未找到,无法访问)

通常,将FtpWebRequest.UsePassive设置为false是一个坏主意。除非您有充分的理由使用主动模式,否则请坚持使用默认的true

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


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

本文链接:https://www.f2er.com/1630025.html

大家都在问