c# - traductor - http status code 429 ps3
Cómo devolver HTTP 429? (2)
Estoy implementando una API usando WCF y la especificación dice que devuelva HTTP 429 en ciertas circunstancias.
Normalmente, simplemente escribo:
throw new WebFaultException(HttpStatusCode.NotFound);
Sin embargo, la enumeración HttpStatusCode no contiene un 429.
Obviamente puedo lanzar a la enumeración
throw new WebFaultException((HttpStatusCode)429);
Sin embargo, me preocupa que esto no produzca el resultado correcto para la aplicación que llama a mi API.
¿Cuál es la mejor manera de crear ampliar HttpStatusCode y enviar estados HTTP válidos (pero no compatibles)?
De la especificación de lenguaje C # 5.0 :
El conjunto de valores que puede adoptar un tipo enum no está limitado por sus miembros enum. En particular, cualquier valor del tipo subyacente de una enumeración se puede convertir al tipo de enumeración y es un valor válido distinto de ese tipo de enumeración.
Así que esto está completamente bien y sería tu mejor apuesta:
throw new WebFaultException((System.Net.HttpStatusCode)429);
Si aloja el servicio WCF con IIS, puede activar el modo de compatibilidad ASP.Net . Una vez hecho esto, puede establecer el estado de HttpContext.Current.Response.StatusCode en 429.
Con eso dicho. Creo que tu mejor opción es intentar lanzar el 429 a HttpStatusCode y ver qué pasa. Si eso funciona, entonces puedes ahorrarte el dolor de cabeza.