51

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

通常我会简单地写:

throw new WebFaultException(HttpStatusCode.NotFound);

但是 HttpStatusCode 枚举不包含 429。

我显然可以投射到枚举

throw new WebFaultException((HttpStatusCode)429);

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

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

4

4 回答 4

51

C# 语言规范 5.0

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

所以这是完全可以的,并且是你最好的选择:

throw new WebFaultException((System.Net.HttpStatusCode)429);
于 2014-03-25T20:18:39.953 回答
0

如果您使用 IIS 托管 WCF 服务,则可以打开ASP.Net Compatibility Mode。完成后,您可以将HttpContext.Current.Response.StatusCode的状态设置为 429。

照这样说。我认为您最好的选择是尝试将 429 转换为 HttpStatusCode 并查看会发生什么。如果这行得通,那么您可以省去自己的头痛。

于 2014-03-25T19:16:32.357 回答
0

如果有人使用 webApi 模板,控制器正在返回一个IActionResult对象。

return new StatusCodeResult(429);

这对我有用。

于 2021-12-15T03:45:47.410 回答
-2

可以直接使用 HttpStatusCode

HttpStatusCode.TooManyRequests

于 2019-11-26T08:26:57.810 回答