使用 ftpWebRequest 但出现错误:远程服务器返回错误 530 未登录

本文关键字:错误 服务器 返回 登录 ftpWebRequest 使用 | 更新日期: 2023-09-27 18:32:23

我正在尝试在c#中使用ftpWebRequest我的代码是

// Get the object used to communicate with the server.
            FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://192.168.20.10/file.txt");
            request.Method = WebRequestMethods.Ftp.UploadFile;
            // This example assumes the FTP site uses anonymous logon.
            request.Credentials = new NetworkCredential("dev'ftp", "devftp");
            // Copy the contents of the file to the request stream.
            StreamReader sourceStream = new StreamReader(@"'file.txt");
            byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
            sourceStream.Close();
            request.ContentLength = fileContents.Length;
            request.UsePassive = true;
            Stream requestStream = request.GetRequestStream();
            requestStream.Write(fileContents, 0, fileContents.Length);
            requestStream.Close();
            FtpWebResponse response = (FtpWebResponse)request.GetResponse();
            Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription);
            response.Close();

并且我在请求中收到错误。GetRequestStream();错误是:远程服务器返回错误 530 未登录如果我尝试进入浏览器页面并在 url 中写 ftp://192.168.20.10/眉毛页面要求我输入名称和密码,我输入相同的名称和密码,我看到 ftp 文件夹中的所有文件和文件夹。

使用 ftpWebRequest 但出现错误:远程服务器返回错误 530 未登录

不应该:

request.Credentials = new NetworkCredential("dev'ftp", "devftp");

是:

request.Credentials = new NetworkCredential("dev''ftp", "devftp");

或:

request.Credentials = new NetworkCredential(@"dev'ftp", "devftp");

我不得不相信这可能会导致您的问题,因为 ''f 是表单馈送字符。

面对同样的问题,这是我的解决方案:

request.Credentials = new NetworkCredential(
    usernameVariable.Normalize(),passwordVariable.Normalize(),domainVariable.Normalize());

详细信息可以在这里找到

希望对您有所帮助。

我发现当通过.NET/C#连接到FTP服务器时,某些字符不是"有效的"。将登录凭据设置为仅包含字母和数字 [a-Z0-9] 后,它可以登录。

只需从用户名或密码中删除双引号,因为有时 $ 登录用户名或密码会导致问题。每次都使用单引号很好。

如果您假定匿名登录,请不要设置网络凭据。 这是我问题的根源。