8

我想创建一个 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;
        }

我的问题很简单:

II 使用一个好的主机(a good FTP Host),我的函数返回“OK”。如果,之后,我使用了一个坏主机,它会返回一个异常

ERROR 421 : Service not available. Closing control connection.

如果,atfer,它用好的地址重新测试,我有一个新的时间这个例外。

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

我尝试:

KeepAlive = true / false and no changes.

任何人都可以帮助我吗?

非常感谢,

此致,

尼克修斯

4

2 回答 2

10

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

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

无需显式调用 close 方法。

于 2013-08-01T07:38:19.997 回答
9

您应该使用FtpWebResponse该类并在获得目录列表后将其关闭:

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

MSDN 中的更多信息
注意:

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

于 2013-07-26T08:24:25.310 回答