簡體   English   中英

Windows防火牆禁止C#將文件上傳到遠程FTP

[英]C# Uploading a file to remote FTP is forbidden by Windows firewall

我使用C#FtpClient庫上傳文件。 在設置自定義端口3072之后建立連接,因為我設置了client.SslProtocols = System.Security.Authentication.SslProtocols.Tls12 ;

但是當我要經歷

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");
}

如果您確實阻止了所有出站/入站端口(列出的端口除外),則FTP幾乎無法工作。

FTP協議使用單獨的傳輸連接端口范圍,可以是出站(推薦的被動模式)或入站(主動模式)。

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

有關詳細信息,請參閱有關FTP協議的網絡設置的文章。

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

  • 運行以下命令:

1.netsh advfirewall防火牆添加規則名稱=“ FTP服務”操作=允許服務= ftpsvc協議= TCP目錄=

2.netsh advfirewall設置全局StatefulFTP禁用

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

它是被動FTP服務器嗎? 如果是這樣,您可能需要按以下說明打開端口范圍:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM