ここ数日、.Net経由でアクセスしようとしている「CCC」コマンドを必要とするFTPSサーバーで苦労してきました
AlexFTPS ライブラリを使用しています。AUTH TLS に接続してネゴシエートできます。ディレクトリを変更することもできますが、ディレクトリを一覧表示したり、ファイルをダウンロードしようとすると、サーバーが「CCC」コマンドを要求します。「CCC」コマンドを送信すると、「200 CCC Context Enabled」という応答が返されますが、サーバー タイムアウト例外が発生するたびに、それ以外のものを送信できません。
さらにテストを行いました:
- WS_FTP : [SSL 認証後に暗号化されていないコマンド チャネルを使用する] オプションをオンにすると機能します
- Filezilla : ログイン後のコマンドとして「CCC」を追加しても機能しません
- http://www.componentpro.com/ftp.net/ : 動作しますが、オープン ソースではありません
どんな助けでも大歓迎です...申し訳ありませんが、私はFTPに堪能ではありません...
これが私のコードです:
Using Client As New AlexPilotti.FTPS.Client.FTPSClient
AddHandler Client.LogCommand, Sub(sender As Object, args As AlexPilotti.FTPS.Common.LogCommandEventArgs)
Console.WriteLine(args.CommandText)
End Sub
AddHandler Client.LogServerReply, Sub(sender As Object, args As AlexPilotti.FTPS.Common.LogServerReplyEventArgs)
Console.WriteLine(args.ServerReply)
End Sub
Dim cred = New Net.NetworkCredential("login", "password")
Client.Connect("ftps.server.com", cred, AlexPilotti.FTPS.Client.ESSLSupportMode.CredentialsRequired)
Client.SendCustomCommand("SYST")
Client.SendCustomCommand("PBSZ 0")
Client.SendCustomCommand("PROT P")
Client.SendCustomCommand("FEAT")
Client.SendCustomCommand("PWD")
Client.SendCustomCommand("TYPE A")
Client.SendCustomCommand("PASV")
Client.SendCustomCommand("CCC")
Client.SendCustomCommand("LIST")
Console.ReadKey()
End Using
ありがとう !