前提・実現したいこと
c#でLinuxサーバーからFTP(アクティブモード)でファイルを取得したいが、
特定のPCで、正常にファイルが取得できない。
同一のexeで、他のPCでは正常にファイルが取得できていることから、
環境に起因するものと思われる。
発生している問題・エラーメッセージ
Linuxサーバーから 500 コマンドの文法エラー が返ってくる
該当のソースコード
C#
1Uri u = new Uri("ftp://" + "対象サーバーのIPアドレス" + "対象のファイル"); 2string downFile = Program.loginDataFileName; 3System.Net.FtpWebRequest ftpReq = (System.Net.FtpWebRequest)System.Net.WebRequest.Create(u); 4ftpReq.Credentials = new System.Net.NetworkCredential("ユーザー名", "パスワード"); 5ftpReq.Method = System.Net.WebRequestMethods.Ftp.DownloadFile; 6ftpReq.KeepAlive = false; 7ftpReq.UseBinary = false; 8ftpReq.UsePassive = false; 9System.Net.FtpWebResponse ftpRes = (System.Net.FtpWebResponse)ftpReq.GetResponse();
試したこと
実際にLinuxサーバーとの間で飛んでいるパケットをキャプチャしたところ、
ポートを指定するコマンドが
PORT 127,0,0,1,194,79
となっており、意図しているIPアドレスとなっていませんでした。(実際のPCのIPは192.168.xx.xxというIP)
Windowsのコマンドプロンプトからftpコマンドを手動で実行したところ
問題なく対象のファイルは取得できました。
ファイアウォールを一時的に無効にしても、現象は変わりませんでした。
補足情報(FW/ツールのバージョンなど)
問題の起きるクライアントPC
・Windows10 Pro(バージョン:1909)
・.NET Framework 4.8
アプリケーション
・C#(VisualStudio2015で作成、ソリューションのプロパティ上の対象のフレームワークは「.NET Framework 4.5.1」
Linuxサーバー
・CentOS6(RHEL5.0でも同様でした)
・vsftpd2.2.2(2.0.5でも同様でした)
回答1件
あなたの回答
tips
プレビュー