我正在使用WCF实现一个API,规范说在某些情况下返回HTTP 429。
通常我会简单地写:
throw new WebFaultException(HttpStatusCode.NotFound);但是,HttpStatusCode枚举不包含429。
显然,我可以强制转换为枚举
throw new WebFaultException((HttpStatusCode)429);但是,我担心这不会为调用我的API的应用程序产生正确的结果。
创建、扩展HttpStatusCode和发送有效的(但不支持的) HTTP状态的最佳方式是什么?
发布于 2014-03-26 04:18:40
从C# Language Specification 5.0
枚举类型可以采用的值集不受其枚举成员的限制。具体地说,枚举的基础类型的任何值都可以转换为枚举类型,并且是该枚举类型的独特有效值。
所以这是完全可以做的,这将是你最好的选择:
throw new WebFaultException((System.Net.HttpStatusCode)429);发布于 2014-03-26 03:16:32
如果您使用IIS托管WCF服务,则可以打开ASP.Net Compatibility Mode。完成后,您可以将HttpContext.Current.Response.StatusCode的状态设置为429。
话虽如此。我认为你最好的选择是尝试将429转换为HttpStatusCode,看看会发生什么。如果这样做有效,那么你就可以省去头痛的麻烦了。
发布于 2021-12-15 03:45:47
如果有人正在使用控制器返回IActionResult对象的webApi模板。
return new StatusCodeResult(429);这对我很管用。
https://stackoverflow.com/questions/22636602
复制相似问题