我已经创建了一个ftp客户端,它在一天中连接了好几次,以便从ftp服务器检索日志文件。
问题是几个小时后,我从ftp服务器收到一条错误消息(达到了421会话限制)。当我使用netstat检查连接时,我可以看到到服务器的几个“已建立”连接,即使我已经“关闭”了连接。
当我尝试在命令行或filezilla上执行同样的操作时,连接将正确关闭。

ftpRequest = (FtpWebRequest)FtpWebRequest.Create(host + "/" + remoteFile);
ftpRequest.Credentials = new NetworkCredential(user, pass);
ftpRequest.UseBinary = true;
ftpRequest.UsePassive = true;
ftpRequest.KeepAlive = true;
ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile;
ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
ftpStream = ftpResponse.GetResponseStream();
FileStream localFileStream = new FileStream(localFile, FileMode.Create);
int bytesRead = ftpStream.Read(byteBuffer, 0, bufferSize);
/* Resource Cleanup */

localFileStream.Close();
ftpStream.Close();
ftpResponse.Close();
ftpRequest = null;

如何正确关闭/断开连接?我忘了什么吗?

最佳答案

尝试将FtpWebRequest.KeepAlive属性设置为false。如果KeepAlive设置为false,则在请求完成时将关闭到服务器的控制连接。

ftpWebRequest.KeepAlive = false;

09-13 04:17