2014-03-25 77 views
32

我正在实现一个使用WCF的API,并且规定在某些情况下返回HTTP 429。如何返回HTTP 429?

一般情况下我简单地写:

throw new WebFaultException(HttpStatusCode.NotFound); 

然而HttpStatusCode枚举不包含429

我可以明显地摔在枚举

throw new WebFaultException((HttpStatusCode)429); 

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

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

+2

发现这个松散的相关链接。它不回答这个问题,但可能会提供背景:http://stackoverflow.com/questions/2022887/how-can-i-createa-custom-http-status-code-from-a-wcf-rest-method – TypeIA

+1

什么样的规范要求发送未注册的状态码?如果你检查HTTP规范429 –

+0

@JulianReschke确实是一个有效的代码 - 它只是.NET不支持有它在枚举 – Liath

回答

24

C# Language Specification 5.0

的组枚举类型可以取的值的不被其 枚举成员限制。特别是,枚举类型的任何值可以转换为枚举类型,并且是一个明确的有效值 enum类型。

所以这是完全正常的做,将是你最好的选择:

throw new WebFaultException((System.Net.HttpStatusCode)429); 
+2

从语言的角度来看,它是正确的,但并不意味着API会正确处理它...... –

+0

这里的异常是从API中抛出的。处理该例外的是来电者的责任。 –

+0

谢谢你。我想返回“锁定”423.很高兴知道铸造工作。 –