1

私の Windows アプリケーションでは、WebClient DownloadFile メソッドを使用して、ローカル ネットワーク上のサーバーから複数の PDF ファイルをダウンロードしています。

各ファイルは、その URL が呼び出されたときに生成されるレポートです。レポートはサイズが異なり、生成されるまでにかかる時間も異なります。

私のコードは URL のリスト (約 400) をループし、各 URL に対して DownloadFile メソッドを呼び出し、対応するレポートが生成されてローカル マシンにダウンロードされます。URL は間違いなく正しいです。

問題は、アプリケーションを実行するたびに、ダウンロードしたファイルの一部が破損し、7KB しかダウンロードされず (メタデータ用だと思います)、ファイルを開こうとすると Acrobat Reader から次のメッセージが表示されることです。ファイルの種類がサポートされていないか、ファイルが破損している可能性があります...」</p>

損傷を受けるのは常に同じファイルであるとは限りません。アプリケーションを再実行すると、それらのファイルは成功することが多く、他のファイルは失敗する可能性があります。

注 1: 優先順位が完全にダウンロードされるまでファイルのダウンロードを開始したくないため、非同期メソッドを使用していません。注 2: すべてのファイルは Oracle レポートであり、データベースにクエリを実行することによって生成されます。注 3: ファイルが破損している場合、例外はスローされません。

これが私のコードです:

using ( WebClient client  = new WebClient() )
{
    for(int i=0; i< URL_List.Length; i++)
    {
        try
        {
        client.DownloadFile( URL_List[i] , myLocalPath+fileName+".pdf" );
        }
        catch(Exception x)
        {
         // write exception message to error log...
        }
    }
}

前もって感謝します。

4

0 に答える 0