[英]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.