Closed pecochappy closed 3 years ago
@pecochappy 重ね重ねフィードバックありがとうございます!
これは .NET 5 で例外メッセージが変わってしまったのが原因ですが、その他にも、.NET Core 当時は、なんと、HttpRequestException
から HTTP ステータスコードが取得できないという仕様で、それでこんなコードで妥協したのが敗因ですね...。
(かといって GetFromJsonAsync<T>()
を使わずに GetAsync()
で生のレスポンスを得てからステータスコードを見たり自分でJSONデシリアライズしたりするのも、どうかと思い...)
※when (e.StatusCode == HttpStatusCode.NotFound) としたら catch できました。
そうですね、.NET 5 からはお知らせ頂いたコードで安全に書けますね。
自習書ならびにソースコード改訂して、追ってリリースしたいと思います。
修正版 (v.5.0b) をリリースしました。
ソースコード該当箇所が修正されたことを確認致しました。 普段は .NET Framework で開発を行っており、.NET Core の HttpRequestException から StatusCode が取得できなかったことは知りませんでした。なかなか実装者に厳しい制約ですね。。。 .NET 5 で機能が充実したようで良かったです。
ご対応頂きありがとうございます。
動作環境の違いによるものかもしれませんが
の例外箇所を確認してみたところ、HttpRequestException の Message が 404 (Not Found) ではなく Response status code does not indicate success: 404 (Not Found). であったため、catch できませんでした。
※when (e.StatusCode == HttpStatusCode.NotFound) としたら catch できました。