none
透過C# FtpClient 上傳檔案 被 Windows 7 防火牆擋住 RRS feed

  • 問題

  • 透過C# FtpClient 函式庫上傳CSV檔案到遠端FTP空間,我設定了例外防火牆Policy 3072 因此程式可以順利和FTP連線上,但當成是到了以下程式碼

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

    就會一直出現以下的錯誤

    • Unable to read data from the transport connection: An attempt was made to access a socket in a way forbidden by its access permissions.

    但當我防火牆全關時候,檔案是可以順利上傳遠端FTP的

    因此想問我防火牆的inbound 或outbound要怎麼設定才能讓上傳檔案

    目前防火牆設定

    (Inbound) Local port 3072,80,20,21,1023 Remote port 3072,80,20,21,1023

    (Outbound) Local port 3072,80,20,21,1023 Remote port 3072,80,20,21,1023

    I use C# FtpClient library to upload a file. the connection is established after I set custom port 3072, because I set client.SslProtocols = System.Security.Authentication.SslProtocols.Tls12;

    But when I am going to go through

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

    it will always shows exception

    • Unable to read data from the transport connection: An attempt was made to access a socket in a way forbidden by its access permissions.

    if I turn Windows Firewall off, file can be uploaded successfully.

    I want to know what policy should I set on Windows firewall to allow me touch remote file and upload it.

    current my firewall setting

    (Inbound)

    Local port 3072,80,20,21,1023

    Remote port 3072,80,20,21,1023

    (Outbound)

    Local port 3072,80,20,21,1023

    Remote port 3072,80,20,21,1023

    Complete code

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



    • 已移動 AskaSu 2017年6月23日 上午 01:17
    • 已編輯 Kun-Yao 2017年6月23日 上午 07:14
    2017年6月22日 下午 07:33

所有回覆

  • 透過C# FtpClient 函式庫上傳CSV檔案到遠端FTP空間,我設定了例外防火牆Policy 3072 因此程式可以順利和FTP連線上,但當成是到了以下程式碼

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

    就會一直出現以下的錯誤

    • Unable to read data from the transport connection: An attempt was made to access a socket in a way forbidden by its access permissions.

    但當我防火牆全關時候,檔案是可以順利上傳遠端FTP的

    因此想問我防火牆的inbound 或outbound要怎麼設定才能讓上傳檔案

    I use C# FtpClient library to upload a file. the connection is established after I set custom port 3072, because I set client.SslProtocols = System.Security.Authentication.SslProtocols.Tls12;

    But when I am going to go through

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

    it will always shows exception

    • Unable to read data from the transport connection: An attempt was made to access a socket in a way forbidden by its access permissions.

    if I turn Windows Firewall off, file can be uploaded successfully.

    I want to know what policy should I set on Windows firewall to allow me touch remote file and upload it.



    由於問題與程式開發可能較為相關,
    協助移動至主要討論程式開發的 MSDN 論壇

    蘇老碎碎念
    資訊無涯,回頭已不見岸
    Facebook - 微軟台灣官方論壇愛好者俱樂部
    如何在論壇正確發問,請參考iThome的文章: 如何問到我要的答案

    2017年6月23日 上午 01:17
  • 你其他的 port 都沒開嗎?

    FTP-21
    SFTP-22
    FTP over SSL-21, 990

    ref: https://www.rebex.net/kb/secure-ftp/default.aspx


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2017年6月23日 上午 02:02
    版主
  • 抱歉 忘了說

    我還有開20, 21, 22

    2017年6月23日 上午 06:57
  • 程式面的部份我不清楚有沒有問題,
    但這個問題也有可能牽扯到 FTP 的運作溝通,
    建議可以先參考這篇討論瞭解其運作溝通方式,
    再去研究是否程式有需要進行修改
    PCZONE: 【求助】問一個FTP port的問題..困擾已久..

    蘇老碎碎念
    資訊無涯,回頭已不見岸
    Facebook - 微軟台灣官方論壇愛好者俱樂部
    如何在論壇正確發問,請參考iThome的文章: 如何問到我要的答案

    2017年6月23日 上午 07:22
  • 個人初步判斷和程式無關,和 infrastructure 比較有關。

    開 port 990 看看。


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure


    2017年6月23日 上午 07:25
    版主
  • 但好奇的是如果防火牆全關閉 檔案卻可以正常上傳

    是不是防火牆開與關更改了主動與被動

    2017年6月23日 上午 08:05
  • 剛試了一下在

    var resutl = client.GetFilePermissions("/Test.txt");

    時仍然出現

    Unable to read data from the transport connection: An attempt was made to access a socket in a way forbidden by its access permissions.


    2017年6月23日 上午 08:07
  • 用這個工具看看你的程式用了什麼 port 吧...

    https://technet.microsoft.com/en-us/sysinternals/bb897437.aspx


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2017年6月23日 上午 08:54
    版主
  • 用這個工具看看你的程式用了什麼 port 吧...

    https://technet.microsoft.com/en-us/sysinternals/bb897437.aspx


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    把防火牆關掉後上傳成功後

    觀察remote port 顯示ftps

    而Local port則會每次不同

    2017年6月23日 下午 01:00
  • 要看傳輸過程中,不是看傳完之後...

    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2017年6月24日 下午 03:49
    版主
  • 對方使用的是Passive mode 

    我程式use Passive 連線仍然得到permissions的錯誤..

    另外我在想因為目前我測試環境是Win10

    遠端伺服器用Win7 

    是不是改用Win Server就不會有防火牆擋的問題?

    2017年7月6日 上午 08:17