2017-07-14 7 views
0

C#でFileZillaサーバーにFTPS接続しようとしていますが、C#アプリケーションはサーバーにログインしないで、サーバーが接続を終了し、次のエラーが発生します。 C#の:C#FTP明示的なSSL要求がログに記録されない

The underlying connection was closed: The server committed a protocol violation. 

私のC#コードはそうのようなものです:接続時

ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; 
var req = (FtpWebRequest)WebRequest.Create("ftp://<my IP>:<my port>/"); 
req.UsePassive = true; 
req.UseBinary = true; 
req.EnableSsl = true; 
req.KeepAlive = true; 
req.Credentials = new NetworkCredential("Puff", "Daddy"); 
req.Method = WebRequestMethods.Ftp.ListDirectory; 
using (var response = (FtpWebResponse)req.GetResponse()) 
{ 
    //Do Something 
} 

はFileZillaのサーバ・インタフェースは、次のように出力しよう:

FileZilla Log

C#のネットワークログはそうのように読み取ります

System.Net.Sockets Verbose: 0 : [6424] Socket#54135081::Socket(AddressFamily#23) 
System.Net.Sockets Verbose: 0 : [6424] Exiting Socket#54135081::Socket() 
System.Net.Sockets Verbose: 0 : [6424] DNS::TryInternalResolve(<FTP Server IP>) 
System.Net.Sockets Verbose: 0 : [6424] Socket#5773521::Connect(<FTP Server IP>:<FTP Port>#-1925092664) 
System.Net.Sockets Information: 0 : [6424] Socket#5773521 - Created connection from <local IP>:61169 to <Server IP>:<Server Port>. 
System.Net.Sockets Verbose: 0 : [6424] Exiting Socket#5773521::Connect() 
System.Net.Sockets Verbose: 0 : [6424] Socket#54135081::Close() 
System.Net.Sockets Verbose: 0 : [6424] Socket#54135081::Dispose() 
System.Net.Sockets Verbose: 0 : [6424] Exiting Socket#54135081::Close() 
System.Net Information: 0 : [6424] FtpControlStream#63094882 - Created connection from <Local IP>:61169 to <Server IP>:<Server Port>. 
System.Net Information: 0 : [6424] Associating FtpWebRequest#59817589 with FtpControlStream#63094882 
System.Net.Sockets Verbose: 0 : [6424] Socket#5773521::Receive() 
System.Net.Sockets Verbose: 0 : [6424] Data from Socket#5773521::Receive 
System.Net.Sockets Verbose: 0 : [6424] 00000000 :             : 
System.Net.Sockets Verbose: 0 : [6424] Exiting Socket#5773521::Receive() -> Int32#0 
System.Net.Sockets Verbose: 0 : [6424] Socket#5773521::Dispose() 
System.Net Information: 0 : [6424] FtpWebRequest#59817589::(Releasing FTP connection#63094882.) 
System.Net Error: 0 : [6424] Exception in FtpWebRequest#59817589::GetResponse - The underlying connection was closed: The server committed a protocol violation. 

私は正常のFileZillaクライアントと同じPCから同じパラメータとの接続を行っているので、私はそれが動作するはずです知っています。

私はこれらの行をApp.Configに追加しました。

<system.net> 
    <settings> 
    <servicePointManager expect100Continue="false"/> 
    <httpWebRequest useUnsafeHeaderParsing="true"/> 
    </settings> 
</system.net> 

また、.NET Framework 3.5および2.0を対象にしようとしましたが、どちらも同じ結果でした。現在、.NET 4.6を実行しています。サーバー証明書などをインストールする必要がありますか?またはコードが間違っていますか?

答えて

1

私はこの質問を投稿してから約2分後に私に答えが届きました。他の誰かがこれらの闘争を抱えている場合には、私はそれを周りに残しておきます(私は時々誰かが私の問題を分かち合うという考えを楽しんでいます。

FileZillaサーバの「FTP over TLS settings」ダイアログで、暗黙のFTPまたはTLS(デフォルトは990)をリスンするポートを設定しました。これは、FZ Client FTPS接続で使用したポートです。私はまた、接続が明示的なFTPSであるので、動作しないC#からこのポートを使用しようとしていました。私は、一般設定で指定されたポートをリスンポート(デフォルトは21)として使用しなければなりませんでした。

私は実際に質問を投稿する前にこれを試しましたが、ルータの設定を適用するのを忘れてしまったので、 "Der"は機能しませんでした。

関連する問題