为什么HttpContext不包含“主机”标头?

时间:2011-12-13 13:24:51

标签: c# asp.net .net asp.net-mvc iis

在我的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 个答案:

答案 0 :(得分:7)

使用string host = requestContext.HttpContext.Request.Url.Host;

答案 1 :(得分:2)

要处理它,你可能想尝试类似的东西:

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

if (host != null)
    if(!host.EndsWith("SomeHardcodedString")) 
else
   // Handle it