如何返回HTTP 429?

时间:2014-03-25 13:50:10

标签: c# http wcf http-status-code-429

我正在使用WCF实现API,规范说在某些情况下返回HTTP 429。

通常我会写:

throw new WebFaultException(HttpStatusCode.NotFound);

然而,HttpStatusCode枚举不包含429。

我显然可以演绎到枚举

throw new WebFaultException((HttpStatusCode)429);

但是我担心这不会给调用我的API的应用程序产生正确的结果。

创建扩展HttpStatusCode并发送有效(但不受支持的)HTTP状态的最佳方法是什么?

3 个答案:

答案 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