我在使用密码中带有特殊字符“§”的 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\247”而不是“pa\302\247”?
谢谢你。