私はWCFを使用してAPIを実装していますが、特定の状況ではHTTP 429を返すように仕様に記述されています。
通常、私は単に書くでしょう:
throw new WebFaultException(HttpStatusCode.NotFound);
ただし、HttpStatusCode列挙には429は含まれません。
私は明らかに列挙型にキャストできます
throw new WebFaultException((HttpStatusCode)429);
ただし、これにより、APIを呼び出すアプリケーションに正しい結果が生成されないことが心配です。
HttpStatusCodeを拡張し、有効な(ただしサポートされていない)HTTPステータスを送信する最良の方法は何ですか?
C#Language Specification 5. から:
列挙型が取り得る値のセットは、その列挙メンバーによって制限されません。特に、列挙型の基になる型の値は列挙型にキャストでき、その列挙型の明確で有効な値です。
したがって、これは完全に大丈夫であり、最善の策です:
throw new WebFaultException((System.Net.HttpStatusCode)429);
IISを使用してWCFサービスをホストしている場合、 ASP.Net互換モード をオンにできます。これで、 HttpContext。 Current.Response.StatusCode から429。
とは言うものの。あなたの最善の策は、429をHttpStatusCodeにキャストして何が起こるか見てみることだと思います。それが上手く行けば、頭痛を省くことができます。