2017-06-22 66 views
0

我使用C#FtpClient庫上傳文件。我設置自定義端口3072後建立連接,因爲我設置了client.SslProtocols = System.Security.Authentication.SslProtocols.Tls12;C#上傳文件到遠程FTP被Windows防火牆禁止

但是,當我準備去通過

client.GetFilePermissions("/Test.txt"); 
client.UploadFile(@"C:\Users\Desktop\Test.txt", "/Test.txt"); 

它總是會顯示異常

無法從傳輸連接讀取數據:試圖 取得了一個訪問套接字其訪問權限被禁止。

如果關閉Windows防火牆,則可以成功上載文件。

我想知道我應該在Windows防火牆上設置什麼策略來允許我觸摸遠程文件並上傳它。

目前我的防火牆設置:

  • (入)
    本地端口3072,80,20,21,1023
    遠程端口3072,80,20,21,1023

  • (出站)
    本地端口3072,80,20,21,1023
    遠程端口3072,80,20,21,1023

我的完整代碼

FtpClient client = new FtpClient(); 
client.Host = "xx.xx.xx.xx"; 
client.Credentials = new NetworkCredential(UserName, Password); 
client.SslProtocols = System.Security.Authentication.SslProtocols.Tls12; 

client.Connect(); 
if (client.IsConnected) 
{ 
    Console.WriteLine("Connected"); 
    client.DataConnectionEncryption = true; 
    var resutl = client.GetFilePermissions("/Test.txt"); 
    client.UploadFile(@"C:\Users\Desktop\Test.txt", "/Test.txt"); 
} 
else 
{ 
    Console.WriteLine("No Connetion"); 
} 
+0

可能有一些相關的信息在這裏:https://serverfault.com/questions/401304/active-ftp-client-blocked-by-windows-firewall-on-windows-7 - 也試着問在該網站上的問題,因爲它看起來比SO更相關。 – PaulF

+0

如果您認爲它只是防火牆問題,那麼您的問題就是堆棧溢出問題,將其移至超級用戶。 - 你必須向我們展示一些日誌文件。還有更多你的代碼!或者至少告訴我們您是否使用被動模式或主動模式。 –

+0

@MartinPrikryl謝謝提醒。現在我加上我的代碼。我沒有任何其他日誌,但有異常消息。我可以將我的FTP代碼設置爲被動還是主動? –

回答

0
  • 打開管理員命令提示符。單擊開始,單擊所有程序,單擊附件,右鍵單擊命令提示符,然後單擊以管理員身份運行。

  • 運行下面的命令:

1。的netsh advfirewall防火牆添加規則名稱=」 FTP服務」行動=允許服務= FTPSVC協議= TCP DIR =在2.netsh advfirewall的設置全局StatefulFTP

禁用

https://technet.microsoft.com/en-us/library/dd421710(v=WS.10).aspx

+0

這對TLS/SSL加密連接無能爲力。防火牆無法檢查加密連接。 +即使鏈接斷開,您的答案也必須自行處理。所以請把這個命令加入你的答案。 –

+0

目前我們使用正常的FTP進行通信,因此它現在可以工作... –

+0

但是,這不是,你的問題是關於什麼。你的回答至少應該提到你放棄了安全。沒有這些信息,答案是錯誤的。 –

-1

它是一個被動的FTP服務器?如果是這樣你可能需要打開的端口範圍喜歡這裏解釋:

https://technet.microsoft.com/en-us/library/083f7757-ad9f-421a-9cde-7a053f3de9a6

+0

我無法設置遠程FTP,我只是想可能是我的防火牆設置了一些策略來阻止它 –

+0

我問他們,他們使用被動FTP服務器,現在我打開入站本地端口1024〜65535和出站遠程端口21和20 ,但它仍然不起作用 –

0

如果你確實阻止所有outbounds /入站端口,除了那些上市,FTP幾乎不能正常工作。

FTP協議使用單獨的傳輸連接端口範圍,無論是出站(推薦被動模式)還是入站(主動模式)。

要設置被動模式,必須找出FTP服務器使用的端口範圍,並在防火牆中啓用該模式。

有關詳細信息,請參閱我的文章network setup for FTP protocol

+0

他們使用被動FTP服務器,現在我打開入站本地端口1024〜65535和出站遠程端口21和20,但它仍然不起作用 –

+0

被動模式只使用出站連接。打開入站本地端口1024〜65535沒有任何意義。 –

+0

什麼防火牆阻止我從FTP讀取數據....它驅使我瘋狂... –