web-dev-qa-db-ja.com

HTTP 429を返す方法は?

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

通常、私は単に書くでしょう:

throw new WebFaultException(HttpStatusCode.NotFound);

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

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

throw new WebFaultException((HttpStatusCode)429);

ただし、これにより、APIを呼び出すアプリケーションに正しい結果が生成されないことが心配です。

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

41
Liath

C#Language Specification 5. から:

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

したがって、これは完全に大丈夫であり、最善の策です:

throw new WebFaultException((System.Net.HttpStatusCode)429);
39
Derek W

IISを使用してWCFサービスをホストしている場合、 ASP.Net互換モード をオンにできます。これで、 HttpContext。 Current.Response.StatusCode から429。

とは言うものの。あなたの最善の策は、429をHttpStatusCodeにキャストして何が起こるか見てみることだと思います。それが上手く行けば、頭痛を省くことができます。

0
Josh