1

これは私の前の質問の続きです:ファイルをチャンクでダウンロードする

現在、大きなメディアファイルをダウンロードして再生できるアプリケーションがあります。ただし、まだ問題が残っています。お気づきのとおり、ダウンロード時間が5分を超えると、タイムアウトのために接続が閉じられます。アプリは簡単に再度開いたり、別のリクエストを送信したりできるため、これは問題ではありません。

さて、それは問題です。応答にはいくつかのタイプのエラーが存在する可能性がありますが、「タイムアウトの期限切れ」例外(これをキャッチした場合、ダウンロードを続行するメソッドを使用します)を他の例外と区別できません。 、それは本当にエラーによって引き起こされます。それらはすべてWebExceptionのタイプを持っています。この記事の解決策も試しましたが、ex.Status 値は「不明なエラー」(!)です。メッセージ値も「リモートサーバーがエラーを返しました:NotFound」と同じです。

だから、私の質問は簡単です:エラーがタイムアウトによって引き起こされていることをどのように定義するのですか?

4

1 に答える 1

1

考えられる解決策:

WebExceptionのタイプは、次のように定義できます。

 catch (WebException ex)
            {
              HttpWebResponse response = (HttpWebResponse)ex.Response;

              if (response.StatusCode == HttpStatusCode.someCode)
                    DoSomething();
            }

したがって、私の場合、HttpStatusCodeは「Forbidden」(エラー403)になります。この情報を使用して、将来のロジックを作成できます。

于 2013-02-06T08:12:17.770 に答える