关闭/破坏FtpWebRequest

时间:2013-07-10 12:25:24

标签: c# .net object ftp

我想创建一个C#函数来测试与FTP服务器的连接。

这是我的功能:

        FtpWebRequest requestDir = (FtpWebRequest)FtpWebRequest.Create("ftp://" + strHost.Trim());
        requestDir.Credentials = new NetworkCredential(strUser, strPass);
        requestDir.Method = WebRequestMethods.Ftp.ListDirectory;
        try
        {
            WebResponse response = requestDir.GetResponse();
            return "ok";
        }
        catch (Exception ex)
        {
            return ex.Message;
        }

我的问题很简单:

我使用好的主机(一个好的FTP主机),我的功能返回“OK”。 如果,之后,我使用了错误的主机,则会返回异常

ERROR 421 : Service not available. Closing control connection.

如果, atfer,它会重新测试并获得良好的回复,那么我有一个新的时间这个例外。

我需要关闭并重新打开我的应用程序才能解决这个问题。

我尝试:

KeepAlive = true / false and no changes.

有人可以帮我吗?

非常感谢,

致以最诚挚的问候,

Nixeus

2 个答案:

答案 0 :(得分:10)

由于FtpWebResponse实现了IDisposable接口,你也可以像这样使用它:

using (FtpWebResponse  ftpWebResponse = (FtpWebResponse)requestDir.GetResponse())
{
    ...
}

无需显式调用close方法。

答案 1 :(得分:9)

您应该使用FtpWebResponse类并在获取目录列表后关闭它:

try
{
    FtpWebResponse response = (FtpWebResponse)requestDir.GetResponse();
    string status = response.StatusDescription;
    response.Close();
    return status;
}

MSDN中的更多信息
注意:

  

对GetResponse的多次调用返回相同的响应对象;该   请求不会重新发布。