2012-04-27 208 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

相關問題