vista tutorial net mvc modelo form español entre ejemplo ejecutar diferencias desde controlador asp c# .net asp.net-mvc-3

c# - tutorial - ¿Cómo establecer el código de estado HTTP de ASP.NET MVC 3?



mvc 4 razor tutorial español (3)

Estamos utilizando las bibliotecas js de OpenWeb en la interfaz, y ellos necesitan que el nivel intermedio .NET les envíe un código de estado de encabezado HTTP específico cuando ocurran ciertos tipos de errores. Intenté lograr eso haciendo esto:

public ActionResult TestError(string id) // id = error code { Request.Headers.Add("Status Code", id); Response.AddHeader("Status Code", id); var error = new Error(); error.ErrorID = 123; error.Level = 2; error.Message = "You broke the Internet!"; return Json(error, JsonRequestBehavior.AllowGet); }

A mitad de camino funcionó. Ver captura de pantalla: código de estado http http://zerogravpro.com/temp/pic.png

Observe que logré el Código de estado de 400 en el Encabezado de respuesta, pero realmente necesito el 400 en el Encabezado de solicitud. En cambio, obtengo "200 OK". ¿Cómo puedo conseguir esto?

Mi estructura de URL para realizar la llamada es simple: / Main / TestError / 400


Hay una discusión extendida en ¿Cuál es la forma correcta de enviar una respuesta HTTP 404 desde una acción ASP.NET MVC?

Lo que quiere hacer es establecer Response.StatusCode lugar de agregar un encabezado.

public ActionResult TestError(string id) // id = error code { Response.StatusCode = 400; // Replace .AddHeader var error = new Error(); // Create class Error() w/ prop error.ErrorID = 123; error.Level = 2; error.Message = "You broke the Internet!"; return Json(error, JsonRequestBehavior.AllowGet); }


Si no puede obtener su resultado json en su vista, intente agregar esto:

Response.TrySkipIisCustomErrors = true;

Antes de esto :

Response.StatusCode = 400;

Más detalles en esta publicación: https://.com/a/37313866/9223103


Si todo lo que desea devolver es el código de error, puede hacer lo siguiente:

public ActionResult TestError(string id) // id = error code { return new HttpStatusCodeResult(id, "You broke the Internet!"); }

Referencia: artículo de MSDN sobre Mvc.HttpStatusCodeResult .

De lo contrario, si desea devolver otra información, use

Response.StatusCode = id

en lugar de

Response.AddHeader("Status Code", id);