2016-03-10 17 views
0

我試圖在遠程FTP服務器上轉儲.csv格式的SQL Server數據。直接上傳文件非常好。 For.eg.如果我上傳一個文件爲ftp://ftp.ftpservername/mySqlData.csv,該文件將很容易上傳。但是,我將每天在任務計劃程序上運行此數據轉儲過程,並且每個.csv文件都將存儲在日期爲名稱的文件夾中。FtpClient是否需要特定的權限才能在FTP服務器中創建文件夾?

我正在使用WebRequest以使用MakeDirectory方法完成此操作。所以簡而言之,我可以上傳文件,但不能創建新的文件夾/目錄。 是否有足夠的簡單讀/寫權限來創建目錄? Ftp服務器啓用SSL,被動模式正用於傳輸數據。我正在使用下面的代碼來創建目錄,但我得到了眼睛疼痛(550)訪問被拒絕錯誤。

public static string MakeDirectory() 
    { 
     try 
     { 
      Uri ftpUri = new Uri(@"ftp://ftp3.ftpserver.com:portnum/TestFolder"); 
      FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpUri); 
      request.Credentials = new NetworkCredential(FtpUsername, FtpPassword); 
      request.Timeout = -1; 
      request.UsePassive = true; 
      request.UseBinary = true; 
      request.KeepAlive = false; 
      ServicePointManager.ServerCertificateValidationCallback = AcceptAllCertifications; 
      request.Method = WebRequestMethods.Ftp.MakeDirectory; 
      using (var response = (FtpWebResponse)request.GetResponse()) 
      { 
       return ftpUri.ToString(); 
      } 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 
    } 
+1

是的,服務器端確定每個用途可以做什麼和不可以做什麼。你看到一個例外嗎?請注意,您可能無法使用被動模式創建文件夾,但我不記得我職業生涯中的那些事。如果您運行通訊跟蹤,您將能夠立即查看誰結束了會話。如果它是服務器,那麼你就足夠了解問服務器人員幾個問題,例如會話init可能工作正常,這告訴你「你進來了」。如果會話在您嘗試創建文件夾時結束,那麼這很可能是被動模式問題或權限問題。 –

+0

@JohnPeters我禁用了PassiveMode並再次嘗試,但我得到了同樣的錯誤。接下來,我安裝了WinSCP並嘗試在FTP服務器中創建一個新文件夾,並且收到以下消息:'在Connect:Enterprise FTP服務器下不支持操作。「其次,我檢查了InnerException以獲取更多詳細信息,並在'banner 'Response'的屬性,我可以看到FTP服務器的名稱。所以我確信我的代碼連接到服務器,但創建文件夾時會引發錯誤。所以我相信這是你提到的權限問題。將進一步調查權限。謝謝約翰! –

+0

@JohnPeters Hello John!你是完全正確的。有許可問題。有許多特定的權限來創建需要提供給FTP客戶端以創建文件夾的文件夾,這與我們在Windows資源管理器中的類似。提供這些權限解決了問題。非常感謝! –

回答

0

是的,有特定的文件夾權限需要提供給任何FTP客戶端,以便他們能夠在FTP目錄中添加新文件夾。此外,通信需要處於被動模式才能夠這樣做。

相關問題