2017-06-22 5 views
0

C#FtpClientライブラリを使用してファイルをアップロードします。私はclient.SslProtocols = System.Security.Authentication.SslProtocols.Tls12を設定しているので、カスタムポート3072を設定した後に接続が確立されます。C#リモートファイアウォールへのファイルのアップロードは、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

を無効にする設定をadvfirewall 2.netsh

に=サービス= FTPSVCプロトコル= TCPのディレクトリを許可する=ルール名=」FTPサービス」アクションを追加ファイアウォールここの情報: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をグローバル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インバウンドポートを開き、しかし、まだ動作しません –

    0

    をあなたが実際に記載されているものを除くすべてのoutbounds /受信ポートをブロックした場合、FTPはほとんど動作しないことができます。

    FTPプロトコルは、アウトバウンド(推奨パッシブモード)またはインバウンド(アクティブモード)のいずれかの転送接続ポート範囲を使用します。

    パッシブモードを設定するには、FTPサーバーが使用するポート範囲を調べ、ファイアウォールで有効にする必要があります。

    詳細は、network setup for FTP protocolのマイ記事を参照してください。

    +0

    彼らはパッシブFTPサーバーを使用して、今私はインバウンドローカルポート1024〜65535を開き、アウトバウンドリモートポート21と20、しかしそれはまだ動作しません –

    +0

    パッシブモードはアウトバウンド接続のみを使用します。着信ローカルポート1024〜65535を開くことは意味をなさない。 –

    +0

    正確にファイアウォールがFTPからデータを読み取るのを止めてしまったのです...それは私の夢中です... –

    関連する問題