我使用FTPWebRequest和FTPWebResponse连接到FTP服务器。此FTP服务器检查来自客户端的失败登录尝试次数,如果在指定时间段内登录尝试失败次数过多,则暂时禁止客户端。对于最初失败的登录尝试,以及被禁止后的任何尝试,我得到
"远程服务器返回错误:(530)未登录。"
如果我在被禁止后尝试手动连接到FTP服务器(即从DOS提示符下),我会
c:\> ftp a.b.c.d
Connected to a.b.c.d.
530 Host w.x.y.z has been temporarily banned from the FTP server.
Connection closed by remote host.
w.x.y.z是我本地系统的IP地址。
我有什么方法可以捕捉到消息的文本
" 530主机w.x.y.z已被暂时禁止进入FTP服务器。"
我需要能够区分常规失败的登录尝试("未登录")和由于被禁止导致的登录尝试,以及我可以看到执行此操作的唯一方法捕获并检查错误消息。
答案 0 :(得分:1)
幸运的是,在调用WebException
时抛出的GetResponse
内部有FtpWebResponse
,这正是您想要的:
try
{
FtpWebResponse response = (FtpWebResponse) request.GetResponse();
}
catch (WebException ex)
{
if (ex.Response != null)
Console.WriteLine(((FtpWebResponse)ex.Response).StatusDescription);
}