如何返回HTTP 429?

Lia*_*ath 41 c# wcf http http-status-code-429

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

通常我会写:

throw new WebFaultException(HttpStatusCode.NotFound);
Run Code Online (Sandbox Code Playgroud)

但是HttpStatusCode枚举不包含429.

我显然可以演绎到枚举

throw new WebFaultException((HttpStatusCode)429);
Run Code Online (Sandbox Code Playgroud)

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

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

Der*_*k W 40

C#语言规范5.0:

枚举类型可以采用的值集不受其枚举成员的限制.特别是,枚举的基础类型的任何值都可以强制转换为枚举类型,并且是该枚举类型的唯一有效值.

所以这完全没问题,这将是你最好的选择:

throw new WebFaultException((System.Net.HttpStatusCode)429);
Run Code Online (Sandbox Code Playgroud)

  • 从语言的角度来看,这是好的,但这并不意味着API会正确处理它...... (3认同)
  • 这里的异常是从 API 抛出的。调用者有责任处理该异常。 (2认同)
  • 我可以确认这种类型的转换在 .NET Framework 4.8 中工作得很好,其中 HttpStatusCode 枚举中没有明确定义“TooManyRequests”——以防万一访问这篇文章的人不清楚。 (2认同)