1. ホーム
  2. c#

[解決済み】.NET WebClientオブジェクトのタイムアウトを変更する方法

2022-04-02 04:53:31

質問

クライアントのデータを私のローカルマシンに(プログラムで)ダウンロードしようとしていますが、クライアントのウェブサーバーが非常に遅く、私の WebClient オブジェクトを作成します。

以下は私のコードです。

WebClient webClient = new WebClient();

webClient.Encoding = Encoding.UTF8;
webClient.DownloadFile(downloadUrl, downloadFile);

このオブジェクトに無限のタイムアウトを設定する方法はありますか?あるいは、そうでなければ、どなたかこれを行うための別の方法の例を教えてください。

URLはブラウザで問題なく動作します - ただ、表示までに3分ほどかかります。

解決するには?

タイムアウトを拡張することができます。元の WebClient クラスを継承し、次の例のように webrequest ゲッターをオーバーライドして、独自のタイムアウトを設定します。

MyWebClientは私の場合、プライベートクラスでした。

private class MyWebClient : WebClient
{
    protected override WebRequest GetWebRequest(Uri uri)
    {
        WebRequest w = base.GetWebRequest(uri);
        w.Timeout = 20 * 60 * 1000;
        return w;
    }
}