【发布时间】:2014-05-03 09:57:58
【问题描述】:
我正在使用 WCF 实现一个 API,规范规定在某些情况下返回 HTTP 429。
通常我会简单地写:
throw new WebFaultException(HttpStatusCode.NotFound);
但是 HttpStatusCode 枚举不包含 429。
我显然可以转换为枚举
throw new WebFaultException((HttpStatusCode)429);
但是我担心这不会为调用我的 API 的应用程序产生正确的结果。
创建扩展 HttpStatusCode 并发送有效(但不受支持)HTTP 状态的最佳方法是什么?
【问题讨论】:
-
找到这个松散相关的链接。它没有回答问题,但可能会提供背景:stackoverflow.com/questions/2022887/…
-
发送未注册状态码需要什么样的规范?
-
@JulianReschke 如果您检查 HTTP 规范 429 确实是有效代码 - 只是 .NET 不支持在枚举中包含它
-
@Liath:Julian 致力于 HTTP 规范。 :-) tools.ietf.org/html/rfc6585#section-4 是 HTTP/429 的提议。
-
@JulianReschke 虽然 RFC 2616 中没有提到 429 Too Many Requests,但在 RFC 6585 中提到了它。FWIW,虽然我没有将它与 WCF 一起使用,但我在 ASP.NET 中发现了这一点将
HttpResponse.StatusCode设置为 429 会得到正确的数字,但不是正确的字符串,因此必须同时设置StatusDescription,或者只设置Status。我担心 WCF 最终可能会得到类似的部分正确结果,因为它与 ASP.NET 的代码相同。
标签: c# http wcf http-status-code-429