web-dev-qa-db-fra.com

Comment renvoyer HTTP 429?

J'implémente une API utilisant WCF et la spécification dit de retourner HTTP 429 dans certaines circonstances.

Normalement, j'écrivais simplement:

throw new WebFaultException(HttpStatusCode.NotFound);

Toutefois, l'énumération HttpStatusCode ne contient pas de 429.

Je peux évidemment lancer à l'énumération

throw new WebFaultException((HttpStatusCode)429);

Cependant, je crains que cela ne produise pas le résultat correct pour l'application appelant mon API.

Quelle est la meilleure façon de créer étendre le HttpStatusCode et d'envoyer des statuts HTTP valides (mais non pris en charge)?

41
Liath

À partir de C # Language Specification 5. :

L'ensemble de valeurs qu'un type enum peut prendre n'est pas limité par ses membres enum. En particulier, toute valeur du type sous-jacent d'une énumération peut être convertie en type énumération et est une valeur valide distincte de ce type énumération.

Donc, c'est tout à fait correct et ce serait votre meilleur pari:

throw new WebFaultException((System.Net.HttpStatusCode)429);
39
Derek W

Si vous hébergez le service WCF avec IIS vous pouvez activer Mode de compatibilité ASP.Net . Avec cela fait, vous pouvez définir le statut de HttpContext. Current.Response.StatusCode à 429.

Cela étant dit. Je pense que votre meilleur pari est d'essayer de lancer le 429 sur HttpStatusCode et de voir ce qui se passe. Si cela fonctionne, vous pouvez vous épargner le mal de tête.

0
Josh