How to return HTTP 429?

I'm implementing an API using WCF and the specification says to return HTTP 429 in certain circumstances.

Normally I'd simply write:

throw new WebFaultException(HttpStatusCode.NotFound);

However the HttpStatusCode enum does not contain a 429.

I can obviously cast to the enum

throw new WebFaultException((HttpStatusCode)429);

However I'm worried that this will not produce the correct result to the application calling my API.

What's the best way to create extend the HttpStatusCode and send valid (but unsupported) HTTP statuses?

Answers


From the C# Language Specification 5.0:

The set of values that an enum type can take on is not limited by its enum members. In particular, any value of the underlying type of an enum can be cast to the enum type and is a distinct valid value of that enum type.

So this is completely alright to do and would be your best bet:

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

If you are hosting the WCF service with IIS you can turn on ASP.Net Compatibility Mode. With that done you can set the status of HttpContext.Current.Response.StatusCode to 429.

With that said. I think your best bet is to try casting the 429 to HttpStatusCode and seeing what happens. If that works then you can save yourself the headache.


Need Your Help

What is the most ridiculous pessimization you've seen?

performance optimization

We all know that premature optimization is the root of all evil because it leads to unreadable/unmaintainable code. Even worse is pessimization, when someone implements an "optimization" because t...