W mojej aplikacji MVC3 mam fabrykę zwyczaj kontrolera, który ma CreateController()
metoda działa w następujący sposób:Dlaczego HttpContext nie zawiera nagłówka "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
}
problem jest host
jest null czasami - Widzę NullReferenceException
dla niektórych wniosków i punktów śladowych wyjątek stos dokładnie na tym linia.
Dlaczego można pobrać tutaj null
? Jak radzić sobie z takimi przypadkami?
Opcja 'nagłówek Host' jest obowiązkowe tylko w HTTP 1.1. Może niektórzy z twoich klientów nadal wykonują żądania przy użyciu protokołu HTTP 1.0? –
@ Frédéric Hamidi: Może. Co mogę zrobić, aby przetworzyć takie żądania? – sharptooth
Zgodnie z [specyfikacją] (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.23), powinieneś być w stanie zsyntetyzować ten nagłówek z nazwy hosta (i numeru portu, jeśli jakiekolwiek) określone w adresie URL żądania ('Request.Url.Host'). –