vista una tag route que parcial page net mvc for asp c# asp.net-mvc http-headers

c# - una - select asp-for asp-items



Cambie el encabezado de solicitud ASP MVC por defecto para agregar sus propios valores (3)

Creo que su problema puede ser simplemente que está tratando de modificar los encabezados demasiado tarde, ya que lo está haciendo en OnResultExecuted . Intente anular OnResultExecuting en OnResultExecuting lugar.

http://msdn.microsoft.com/en-us/library/system.web.mvc.actionfilterattribute.onresultexecuting.aspx

Intento cambiar todos mis encabezados de respuesta HTTP ASP MVC para tener otro valor de forma predeterminada para implementar el descubrimiento automático de Pingback en mi aplicación de blog.

El encabezado predeterminado (en Cassini) es:

Cache-Control private Connection Close Content-Length 20901 Content-Type text/html; charset=utf-8 Date Fri, 20 Apr 2012 22:46:11 GMT Server ASP.NET Development Server/10.0.0.0 X-AspNet-Version 4.0.30319 X-AspNetMvc-Version 3.0

y quiero un valor agregado adicional:

X-Pingback: http://localhost:4912/pingback/xmlrpcserver

Busqué en Google un poco y encontré una solución neet: - para derivar de ActionFilterAttribute y anular el método OnResultExecuted :

public class HttpHeaderAttribute : ActionFilterAttribute { public string Name { get; set; } public string Value { get; set; } public HttpHeaderAttribute(string name, string value) { Name = name; Value = value; } public override void OnResultExecuted(ResultExecutedContext filterContext) { filterContext.HttpContext.Request.Headers.Add(Name, Value); base.OnResultExecuted(filterContext); } }

Y luego simplemente puse el atributo en mis métodos de Controladores:

[HttpHeader("X-Pingback","http://localhost:4912/pingback/xmlrpcserver")] public ActionResult Index() { var allArticles = _repository.GetPublishedArticles(SortOrder.desc); return View(allArticles); }

Cuando conecto la aplicación obtengo el siguiente error:

¿Algunas ideas?


Sé que esta publicación es antigua ... pero quería señalar que, si bien OnResultExecuting es el método adecuado para hacerlo, la publicación original muestra que estaba intentando agregar encabezados a la solicitud. Uno no simplemente agrega encabezados a una solicitud y espera que aparezcan en la respuesta. ;-)

Además, la forma correcta de agregar encabezados a una respuesta ... que también funciona en Cassini ... es usar lo siguiente:

filterContext.HttpContext.Response.AddHeader("X-My-Request-Header", "works in cassini");


Esto puede funcionar o no (obviamente, si no lo hago, eliminaré la respuesta para futuros usuarios). Parece que de la excepción Operation is not supported by this platform , que Cassini muchos no admiten encabezados personalizados (lo que sería bastante extraño, pero una posibilidad). Lo que sugeriría es asegurarse de que está utilizando Visual Studio 2010 SP1 , luego instalar IIS Express (que es una actualización de Cassini y se parece mucho más a IIS real), y luego cambiar su proyecto para usar IIS Express y ver si obtiene la misma excepción

Además, es posible que desee revisar ¿Por qué HttpCacheability.Private suprime ETags? ya que también puede darte una solución alternativa.