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;
}
}
是的,服務器端確定每個用途可以做什麼和不可以做什麼。你看到一個例外嗎?請注意,您可能無法使用被動模式創建文件夾,但我不記得我職業生涯中的那些事。如果您運行通訊跟蹤,您將能夠立即查看誰結束了會話。如果它是服務器,那麼你就足夠了解問服務器人員幾個問題,例如會話init可能工作正常,這告訴你「你進來了」。如果會話在您嘗試創建文件夾時結束,那麼這很可能是被動模式問題或權限問題。 –
@JohnPeters我禁用了PassiveMode並再次嘗試,但我得到了同樣的錯誤。接下來,我安裝了WinSCP並嘗試在FTP服務器中創建一個新文件夾,並且收到以下消息:'在Connect:Enterprise FTP服務器下不支持操作。「其次,我檢查了InnerException以獲取更多詳細信息,並在'banner 'Response'的屬性,我可以看到FTP服務器的名稱。所以我確信我的代碼連接到服務器,但創建文件夾時會引發錯誤。所以我相信這是你提到的權限問題。將進一步調查權限。謝謝約翰! –
@JohnPeters Hello John!你是完全正確的。有許可問題。有許多特定的權限來創建需要提供給FTP客戶端以創建文件夾的文件夾,這與我們在Windows資源管理器中的類似。提供這些權限解決了問題。非常感謝! –