2012-04-27 61 views
6

我试图使用的FtpWebRequest在C#中没有登录 我的代码是使用的FtpWebRequest一个错误:远程服务器返回错误530

// 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(); 

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

回答

15

应该不是线路:

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

是:

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

或:

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

我不得不相信,这可能会导致您的问题,因为\ f是换页符。

6

我发现,通过.NET/C#连接到FTP服务器时,某些字符不是“有效的”。设置登录凭据只有数字和字母后[A-Z0-9]它的工作登录

+0

工作!谢谢 – user5071155 2017-11-22 16:00:54

7

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

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

细节可以发现here

希望它有帮助。

0

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

+0

不要发布相同的答案几个问题。将它们标记为彼此重复可能会更好。 – Jaap 2017-08-24 11:05:57

+0

@Jaap非常感谢您的指导。 – 2017-08-25 06:12:28

相关问题