Estoy tratando de devolver los códigos Http adecuados y las respuestas de mi aplicación, pero estoy luchando. Parece que hay 2 formas de devolver respuestas http específicas.Lanzar HttpResponseException en el método de acción WebAPI que devuelve la respuesta 200 vacía
La forma en que quiero tratar con él es lanzando un HttpResponseException
:
public Information Get(int apiKey)
{
if (!_users.Authenticate(apiKey))
{
var response = new HttpResponseMessage();
response.StatusCode = (HttpStatusCode)401;
response.ReasonPhrase = "ApiKey invalid";
throw new HttpResponseException(response);
}
return _info.Get();
}
Sin embargo, cuando hago esto la respuesta que veo es sólo una respuesta vacía 200!
También parece que también puede cambiar la firma de su método de acción para devolver un HttpResponseMessage
así:
public HttpResponseMessage Get()
{
if (!_users.Authenticate(apiKey))
{
return Request.CreateResponse((HttpStatusCode) 401, "ApiKey invalid");
}
return Request.CreateResponse((HttpStatusCode) 200, _info.Get());
}
Realmente no quiero hacer esto si puedo evitarlo, me haría mucho más bien tengo mi tipo de devolución como el objeto que estoy tratando de recuperar en lugar de envolverlo cada vez en un HttpResponseMessage
.
¿Hay alguna razón por la cual el primer método devuelva un 200 vacío en lugar del 401 con el mensaje como yo quiero?
aplausos por eso - Terminé usando un filtro para hacer frente a las excepciones al final, gracias a que me apunta hacia ese artículo de msdn – jcvandan