2012-11-21 49 views
1

我們公司的網站託管在ORCSWEB。在ORCS結束時已經設定了一些策略和規則。當人們嘗試訪問我們公司的ftp並且錯誤的憑證3次失敗時,我們的ftp將被鎖定。我們經常以編程方式通過ftp上傳文件,但有時發現ftp鎖。所以我和orcsweb技術支持人員交談:他們說我們試圖通過代碼匿名訪問我們的ftp。所以我用來訪問ftp的代碼如下。因此,請仔細閱讀我的代碼,並告訴我在導致匿名訪問的代碼中出現了什麼問題,因爲我嘗試使用正確的憑據進行訪問。通過ftp匿名訪問和文件上傳c#

public static string IsFtpAccessible(string FTPAddress) 
    { 
     string strError = ""; 
     FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(FTPAddress); 
     FtpWebResponse res; 
     StreamReader reader; 

     ftp.Credentials = new NetworkCredential("myuserid", "00000password"); 
     ftp.KeepAlive = false; 
     ftp.Method = WebRequestMethods.Ftp.ListDirectoryDetails; 
     ftp.UsePassive = true; 
     ftp.UseBinary = true; 
     ftp.KeepAlive = false; 

     try 
     { 
      using (res = (FtpWebResponse)ftp.GetResponse()) 
      { 
       reader = new StreamReader(res.GetResponseStream()); 
      } 
     } 
     catch(Exception ex) 
     { 
      strError = "ERROR:" + ex.Message.ToString(); 
     } 
     return strError; 
    } 

所以告訴我什麼是缺少在我的代碼,導致匿名訪問。

+0

什麼是被動模式和什麼是主動模式。 UseBinary&KeepAlive屬性的功能是什麼?任何人都可以介紹一下。 – Thomas

+0

UseBinary:true向服務器表明要傳輸的數據是二進制的;爲false表示數據是文本。默認值是true。這裏的更多信息:http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest.usebinary.aspx – Mark

+0

KeepAlive:如果不應銷燬與服務器的連接,則爲true;否則,是錯誤的。默認值是true。更多信息在這裏:http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest.keepalive.aspx – Mark

回答

2

服務器上必須允許匿名訪問,我假設根據您的描述不允許匿名訪問。通常情況下,匿名訪問憑據是這樣提供的:

request.Credentials = new NetworkCredential ("anonymous","[email protected]"); 

重點是電子郵件地址是密碼。

如果你只是有時會發現基於代碼的FTP被鎖定,那麼這不是你的問題所在。