103

私はおそらくここで明らかな何かを見逃しています。

メッセージ文字列に含まれるHttpClientスローを使用しています。HttpRequestExceptionStatusCode

どうすればそれにアクセスできますStatusCodeか?


編集:詳細、私は急いでこの質問を書きました。

HttpClientWebApi プロジェクト内の別の API にアクセスするために使用しています。はい、私が電話している理由はわかっていEnsureSuccessStatusCode()ます。404 や 403 などのいくつかのエラーをダウンストリームに伝播したいと考えています。

私が望んでいたのは、一貫して customHttpRequestExceptionを使用するように変換することだけでした。HttpResponseExceptionExceptionFilterAttribute

残念ながら、HttpRequestExceptionメッセージ以外に使用できる追加情報はありません。StatusCode生の(intまたはenum)形式で明らかにしたいと思っていました。

次のいずれかができるようです:

  1. メッセージを使用してステータス コードを切り替えます (bleh)
  2. または、EnsureSuccessStatusCode の私のバージョンを作成し、実際に使用できる例外をスローします。
4

8 に答える 8

30

その価値のために、この男は何か賢いことをしました : -webexception-the-remote-name?forum=csharpgeneral

例外ステータス プロパティが必要な場合は、次のようにできます。

catch (HttpRequestException requestException)
{
    if (requestException.InnerException is WebException webException && webException.Status == WebExceptionStatus.NameResolutionFailure)
    {
        return true;
    }

    return false;
}
于 2016-08-10T20:24:13.833 に答える