Почему HttpContext не содержит заголовок "Host"? - PullRequest
6 голосов
/ 13 декабря 2011

В моем приложении MVC3 у меня есть фабрика пользовательских контроллеров, в которой метод CreateController() работает следующим образом:

  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
   }

проблема в том, что host иногда пусто - я вижу NullReferenceException для некоторых запросов и точки трассировки стека исключений именно на этой строке.

Почему бы null быть найденным здесь? Как мне справиться с такими случаями?

Ответы [ 2 ]

7 голосов
/ 13 декабря 2011

Использование string host = requestContext.HttpContext.Request.Url.Host;

2 голосов
/ 13 декабря 2011

Чтобы справиться с этим, вы можете попробовать что-то вроде:

var host = requestContext.HttpContext.Request.Url.Host;

if (host != null)
    if(!host.EndsWith("SomeHardcodedString")) 
else
   // Handle it
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...