0

http Web 応答例外を処理する通常の方法を想定します。

void BeginGetResponseCallback(IAsyncResult asyncResult)
    {
        try
        {
            var req = asyncResult.AsyncState as HttpWebRequest;
            using (HttpWebResponse response = req.EndGetResponse(asyncResult) as HttpWebResponse)
            {
                ...
            }
        }
        catch (WebException we)
        {
            ...
        }
    }

ここでの問題は、サーバーへの接続の問題がある場合、またはサーバーが実際に「見つかりません」ステータスで応答した場合に、同じエラー コード (「見つかりません」) を持つ WebException がスローされる可能性があることです。これは、HttpWebRequest の実装に問題があるようです。

このような状況、つまり、スローされた例外がクライアントまたはサーバーで「発生」したかどうかを、どのように適切に区別する必要がありますか?

Edit1: Windows Phone 7.1 プラットフォームでこのコードを実行しています。

Edit2: 提案された WebException の Status プロパティは、WP7 では実質的に役に立ちません。ProtocolError であるべき場合でも、常に UnknownError に設定されているためです。WP7 で HttpWebRequest の実装に問題がある可能性はありますか?

Edit3: Silverlight の WebException.Status の MSDN ドキュメント ページには、ProtocolError 列挙メンバーがサポートされていないと記載されているため、これで説明されています...サポートされていない理由はわかりません。

4

1 に答える 1

0

Statusのフィールドを調べることができますWebException。これは、エラーが発生した場所を大まかに知るのに役立ちます。そのためのドキュメントはここにあり、非常に単純なサンプルコードはここにあります。

于 2012-07-09T09:28:36.397 に答える