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 列挙メンバーがサポートされていないと記載されているため、これで説明されています...サポートされていない理由はわかりません。