51

私は WCF を使用して API を実装していますが、仕様では特定の状況で HTTP 429 を返すようになっています。

通常、私は単純に次のように書きます。

throw new WebFaultException(HttpStatusCode.NotFound);

ただし、HttpStatusCode 列挙には 429 が含まれていません。

明らかに列挙型にキャストできます

throw new WebFaultException((HttpStatusCode)429);

ただし、API を呼び出すアプリケーションに正しい結果が得られないのではないかと心配しています。

HttpStatusCode を拡張し、有効な (ただしサポートされていない) HTTP ステータスを送信する最良の方法は何ですか?

4

4 に答える 4

51

C# 言語仕様 5.0から:

列挙型が取ることができる値のセットは、その列挙メンバーによって制限されません。特に、列挙型の基になる型の値は列挙型にキャストでき、その列挙型の明確な有効な値です。

したがって、これはまったく問題なく、最善の策です。

throw new WebFaultException((System.Net.HttpStatusCode)429);
于 2014-03-25T20:18:39.953 に答える
0

IIS で WCF サービスをホストしている場合は、ASP.Net 互換モードを有効にすることができます。これで、 HttpContext.Current.Response.StatusCodeのステータスを 429に設定できます。

とは言うものの。最善の策は、429 を HttpStatusCode にキャストして、何が起こるかを確認することだと思います。それがうまくいけば、頭痛から解放されます。

于 2014-03-25T19:16:32.357 に答える
0

コントローラーがオブジェクトを返す webApi テンプレートを誰かが使用しているIActionResult場合。

return new StatusCodeResult(429);

それは私のために働いた。

于 2021-12-15T03:45:47.410 に答える