パッシブモードを使用するFTPサイトからファイルをダウンロードしようとしています。FtpWebRequestメソッドとWebClient.DownloadFileメソッドおよびDownloadFileAsyncメソッドの両方を試しました。
最近、私のコードは次のようになります。
using (var client = new WebClient())
{
client.Proxy = new WebProxy();
client.Credentials = credentials;
client.DownloadFileCompleted += client_DownloadFileCompleted;
client.DownloadFileAsync(new Uri(remotePath), localPath);
}
DownloadFileメソッドでラップされます。非同期ハンドラーで、次のアイテムを取得し、(再帰的に)DownloadFileメソッドを再度呼び出します。以下同様に、最後のアイテムに到達するまで続けます。
ほぼ毎回、私が使用するすべての方法で、6つのファイルを処理し、7番目のエラーを出します。リスト内のすべてのファイルを通過したのは1回だけで、再度複製することはできませんでした。ファイル数は約100で、ファイルサイズは1個あたり約30〜120kです。不思議なことに、ローカルフォルダーのファイル数が7番目の項目でハングすることがよくありますが、ワーカープロセスをバックグラウンドで実行し、数分後に戻ってIISExpressまたはVSWebサーバーをシャットダウンすると、ファイルが表示されます。ただし、予測不可能であり、そのまま本番環境で使用することはできません。
また、CodePlexでFTP LIBライブラリを試しましたが、同じ問題が発生しました。
彼らの側の何かが私のつながりを閉じているようです。