试图通过FTP在C#上传文件的远程服务器上,当550错误(550 error when attemp

2019-10-22 18:37发布

当对我们的内部网络中的服务器运行下面的代码工作。 当我更改凭据,以反映我们的网络外部的服务器,我得到一个550错误响应。 当我捕捉到了异常,如下所示:

try { 
    requestStream = request.GetRequestStream();
    FtpWebResponse resp = (FtpWebResponse)request.GetResponse();

}
catch(WebException e) {
    string status = ((FtpWebResponse)e.Response).StatusDescription;
    throw e;
}

状态的数值为:“550命令STOR失败\ r \ n”

我可以通过使用客户端如Filezilla的相同的凭据成功上传的文件。 使用SetMethodRequiresCWD()作为其他答案都建议我已经尝试过,这并没有为我工作。

这里是接收串,每个包含完整的文件路径列表的代码。

private void sendFilesViaFTP(List<string> fileNames) {
    FtpWebRequest request = null;

    string ftpEndPoint = "ftp://pathToServer/";
    string fileNameOnly; //no path
    Stream requestStream;

    foreach(string each in fileNames){
        fileNameOnly = each.Substring(each.LastIndexOf('\\') + 1);

        request = (FtpWebRequest)WebRequest.Create(ftpEndPoint + fileNameOnly);
        request.Method = WebRequestMethods.Ftp.UploadFile;

        request.Credentials = new NetworkCredential("username", "password");

        StreamReader fileToSend = new StreamReader(each);

        byte[] fileContents = Encoding.UTF8.GetBytes(fileToSend.ReadToEnd()); //this is assuming the files are UTF-8 encoded, need to confirm
        fileToSend.Close();
        request.ContentLength = fileContents.Length;

        requestStream = request.GetRequestStream();


        requestStream.Write(fileContents, 0, fileContents.Length);
        requestStream.Close();

        FtpWebResponse response = (FtpWebResponse)request.GetResponse(); //validate this in some way?
        response.Close();
    }
}

Answer 1:

我有一个非常类似的问题; 使用某种原因FtpWebRequest要求我使用的凭据以完全访问所有文件夹和子文件夹我的FTP服务器,不仅是文件夹,我想保存。

如果我一直使用其他凭证(这工作得很好其他客户端),我会反复得到550错误。

我会尝试具有所有访问另一个FTP用户,并看看是否能工程。



Answer 2:

我没能解决这个使用的FtpWebRequest。 我使用Web客户端如以下,这产生更多的简洁的代码,不得不工作的侧效益重新实现:

    private void sendFilesViaFTP(List<string> fileNames){
        WebClient client = new WebClient();
        client.Credentials = new NetworkCredential("username", "password");
        foreach(string each in fileNames){
            byte[] response = client.UploadFile("ftp://endpoint/" + each, "STOR", each);
            string result = System.Text.Encoding.ASCII.GetString(response);
            Console.Write(result);
        }
    }


文章来源: 550 error when attempting to upload file via FTP in C# on remote server
标签: c# .net ftp