我想创建一个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
答案 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的多次调用返回相同的响应对象;该 请求不会重新发布。