使用 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 文件夹中的所有文件和文件夹。
不应该:
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] 后,它可以登录。
只需从用户名或密码中删除双引号,因为有时 $ 登录用户名或密码会导致问题。每次都使用单引号很好。
如果您假定匿名登录,请不要设置网络凭据。 这是我问题的根源。