1
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 ...
}
ループが行われた後は、私は接続を閉じたいです。私はこれを達成するための直接的な方法を見つけることができませんでした。 、
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サーバへの別の低フットプリント要求を行い、この時false
に設定KeepAlive
フラグがあります特定の接続グループに対して開いているFTP接続を閉じるためのよりシンプルで洗練された直接的な方法です。
私はこの「解決策」を自分で考えました。 'List'などのコレクションの場合は大丈夫ですが、任意の' IEnumerable'を使用する一般的な「解決法」では、列挙の項目数を必要とするため、私の「解」より劣ると考えます。あらかじめ知っておいてください。つまり、ループのコレクションの遅延評価のメリットを失いたくない場合は、私のオリジナルの「解決策」に固執する必要があります。 –