por httpresponseexception exceptions example catch autenticacion all c# asp.net-web-api http-status-code-404

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