在C#(.NET 4.6)中关闭保持活动的FTP或FTPS连接的最佳方法?

在C#(.NET 4.6)中,我使用保持活动的FTPS连接来下载循环中的几个文件,如下所示:

foreach (string filename in filenames) { string requestUriString = GetFtpUriString(myDir) + "/" + filename; FtpWebRequest request = (FtpWebRequest)WebRequest.Create(requestUriString); request.Method = WebRequestMethods.Ftp.DownloadFile; request.Credentials = new NetworkCredential(myFtpsUsername, myFtpsPassword); request.EnableSsl = true; request.ConnectionGroupName = myConnectionGroupName; request.KeepAlive = true; ... do something ... } 

循环完成后,我想关闭连接。 我找不到直接的方法来实现这一目标。 我想出的是以下解决方法,它会向FTP服务器发出另一个低占用空间的请求,这次KeepAlive标志设置为false

 FtpWebRequest request = (FtpWebRequest)WebRequest.Create(GetFtpUriString(myDir)); request.Method = WebRequestMethods.Ftp.PrintWorkingDirectory; request.Credentials = new NetworkCredential(myFtpsUsername, myFtpsPassword); request.EnableSsl = true; request.ConnectionGroupName = myConnectionGroupName; request.KeepAlive = false; FtpWebResponse response = (FtpWebResponse)request.GetResponse(); response.Close(); 

我现在想知道是否存在另一个更简单,更优雅和直接的方法来关闭特定连接组的开放FTP连接。

FtpWebRequest实例的连接池没有任何公共接口。


但是有一个简单的解决方案,只需在循环的最后一轮将KeepAlive设置为false