我正在使用WCF实现API,规范说在某些情况下返回HTTP 429。
通常我会写:
throw new WebFaultException(HttpStatusCode.NotFound);
然而,HttpStatusCode枚举不包含429。
我显然可以演绎到枚举
throw new WebFaultException((HttpStatusCode)429);
但是我担心这不会给调用我的API的应用程序产生正确的结果。
创建扩展HttpStatusCode并发送有效(但不受支持的)HTTP状态的最佳方法是什么?
答案 0 :(得分:36)
来自C# Language Specification 5.0:
枚举类型可以采用的值集不受其限制 枚举成员。特别是,基础类型的任何值 枚举可以转换为枚举类型,并且是一个独特的有效值 枚举类型。
所以这样做完全没问题,这将是你最好的选择:
throw new WebFaultException((System.Net.HttpStatusCode)429);
答案 1 :(得分:0)
如果您使用IIS托管WCF服务,则可以启用ASP.Net Compatibility Mode。完成后,您可以将HttpContext.Current.Response.StatusCode的状态设置为429。
随着说。我认为你最好的办法是尝试将429转换为HttpStatusCode,看看会发生什么。如果有效,那么你可以省去头痛。
答案 2 :(得分:0)
您可以直接使用HttpStatusCode
HttpStatusCode.TooManyRequests