En mi solicitud MVC3 que tienen una fábrica de controlador personalizado que tiene CreateController()
método de trabajo de la siguiente manera:¿Por qué HttpContext no contendría un encabezado "Host"?
public IController CreateController(RequestContext requestContext, string controllerName)
{
string host = requestContext.HttpContext.Request.Headers["Host"];
if(!host.EndsWith(SomeHardcodedString)) { // FAILS HERE
//some special action
}
//proceed with controller creation
}
el problema es host
es nulo veces - Veo NullReferenceException
para algunas peticiones y los puntos de seguimiento de pila de excepción exactamente en ese línea.
¿Por qué se recuperaría null
aquí? ¿Cómo manejo estos casos?
La cabecera 'Host' sólo es obligatoria en HTTP 1.1. Tal vez algunos de sus clientes siguen realizando solicitudes utilizando el protocolo HTTP 1.0? –
@ Frédéric Hamidi: Tal vez. ¿Qué puedo hacer para procesar tales solicitudes? – sharptooth
Según [la especificación] (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.23), debería poder sintetizar este encabezado a partir del nombre de host (y número de puerto, si corresponde) especificado en la URL de la solicitud ('Request.Url.Host'). –