0

パッシブモードを使用する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ライブラリを試しましたが、同じ問題が発生しました。

彼らの側の何かが私のつながりを閉じているようです。

4

1 に答える 1

0

同様の問題がありました。私の場合、Linux サーバー上の多数のフォルダーから多数の小さなファイルをダウンロードする必要がありました。システム管理者は、各バッチ間に 3 秒の遅延を入れることを提案しました。エラーの数が大幅に減少しました。

于 2013-03-04T14:39:38.370 に答える