パスワードに特殊文字「§」を含む FtpWebRequest を使用すると問題が発生します。コードは次のようになります。
FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://ftphost"));
reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;
reqFTP.UsePassive = true;
reqFTP.EnableSsl = false;
reqFTP.Timeout = 60000;
reqFTP.UseBinary = false;
reqFTP.Credentials = new NetworkCredential("user", "pa§");
FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
GetResponse() メソッドが「530 ユーザーがログインできません」で失敗します。FileZilla を使用すると、ログインが機能します。
Wireshark でネットワーク トラフィックを追跡したところ、次のことがわかりました。
- FileZilla はパスワードを「pa\302\247」に変換し、ログインを試みて失敗します。その後、FileZilla はパスワード「pa\247」で接続を再試行し、成功します。
- FtpWebRequest はパスワードを「pa\302\247」に変換し、ログインを試みて失敗し、例外をスローします。
FtpWebRequest に強制的にパスワードを「pa\302\247」ではなく「pa\247」に変換させるにはどうすればよいですか?
ありがとうございました。