httpresponseexception - web api c#
Devolver código de estado HTTP personalizado desde el punto final WebAPI 2 (3)
De acuerdo con la especificación de C #:
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 enum y es un valor válido distinto de ese tipo de enumeración
Por lo tanto, puede convertir el código de estado 422 a HttpStatusCode.
Controlador de ejemplo:
using System.Net;
using System.Net.Http;
using System.Web.Http;
namespace CompanyName.Controllers.Api
{
[RoutePrefix("services/noop")]
[AllowAnonymous]
public class NoOpController : ApiController
{
[Route]
[HttpGet]
public IHttpActionResult GetNoop()
{
return new System.Web.Http.Results.ResponseMessageResult(
Request.CreateErrorResponse(
(HttpStatusCode)422,
new HttpError("Something goes wrong")
)
);
}
}
}
Estoy trabajando en un servicio en WebAPI 2, y el punto final actualmente devuelve IHttpActionResult
. Me gustaría devolver un código de estado 422
, pero como no está en la enumeración HttpStatusCode
, no sé cómo se enviará, ya que todos los constructores requieren un parámetro de HttpStatusCode
Tal como está ahora, estoy devolviendo BadResult(message)
, pero devolver un mensaje 422
+ sería más descriptivo y útil para mis clientes. ¿Algunas ideas?
Lo uso de esta forma simple y elegante.
public ActionResult Validate(User user)
{
return new HttpStatusCodeResult((HttpStatusCode)500,
"My custom internal server error.");
}
Luego controlador angular.
function errorCallBack(response) {
$scope.response = {
code: response.status,
text: response.statusText
}});
Espero que te ayude
return Content((HttpStatusCode) 422, whatEver);
el crédito es para: Devolver el contenido con IHttpActionResult para una respuesta incorrecta
y tu código debe ser <= 999
y por favor ignore los códigos entre 100 y 200.