2012-02-10 53 views
3

WebClientにタイムアウトのプロパティがないことがわかりました。私の周りを検索し、あなたはHttpWebRequestのからのWebClientを継承し、たとえば、タイムアウトを設定することが可能な異なるコードが見つかりました:アップロード中にWebClientのタイムアウトが発生する

class MyWebClient : WebClient 
{ 
    protected override WebRequest GetWebRequest(Uri address) 
    { 
     WebRequest request = base.GetWebRequest(address); 
     if (request is HttpWebRequest) 
     { 
      (request as HttpWebRequest).KeepAlive = false; 
      (request as HttpWebRequest).Timeout = 25000; //(tried different values) 
     } 
     return request; 
    } 
} 

をしかし、何もここで働いていないようにみえます。タイムアウトは100秒後に正確に発生します。私はこのクライアントアプリケーションを使って大きなファイルをアップロードしようとしています。 PHPがサーバー側で実行され、すべてのタイムアウト/ maxupload値が設定されます。

例外メッセージは、次のとおりです。

the request was aborted the request was canceled 

私を助けてください。

+0

。偽はサーバに接続クローズヘッダを送ることができます – sealz

答えて

0

httpWebRequestのデフォルト値は100秒なので、何かがコード内で正しく設定されていません。

あなたは.KeepAlive = true;

MSDNを設定しようとしたことがありは、HTTP/1.1を使用する場合は、キープアライブ偽缶に

を、それを設定すると、デフォルトでオンになって言います。 KeepAliveをfalseに設定すると、Connection:Closeヘッダーがサーバーに送信されることがあります。

タイムアウトを正しく設定しているように思われるので、これは意味があります。あなたはダブルチェックすることができますhere

This質問また、そのエラーメッセージをキープアライブプロパティにリンクする回答があります。他の回答で

+0

私はキープアライブをtrueにしようとしましたが、それでも同じ結果になりました。 :-( –

+0

そのは ' –

2

コードは私のために働いた、私だけに9行目を変更:キープアライブがtrueの場合は、同じ問題を得るのですか

((HttpWebRequest)request).Timeout = System.Threading.Timeout.Infinite; 
+3

真または偽で作業していない(など'非常に悪い習慣である; 'は' ''タイプでない場合、それはにISN 'NullReferenceException'を、スローされます問題を診断する際には全く役に立ちません。代わりに直接キャストを使用してください: '((HttpWebRequest)request).Timeout' –

関連する問題