Web api中的请求始终为null?

时间:2013-12-06 16:01:54

标签: c# asp.net-mvc-4 asp.net-web-api

我有一个带有基本控制器的Web API,我想从Request.GetRouteData().Values["controller"]获取请求的控制器名称,如下代码所示:

public class BaseApiController : ApiController
{
    protected string EntityName;

    public BaseApiController()
    {
        //Request is null
        EntityName = Request.GetRouteData().Values["controller"] as string;
    }
}

但在上面的代码中,Request始终为null 上面的代码出了什么问题?

3 个答案:

答案 0 :(得分:6)

您无法在Request的c'tor中使用Controller属性。它在实际请求被框架移交给它之前被调用。

答案 1 :(得分:6)

这是预期的 - 你在控制器构造函数中。尚未使用实际请求初始化控制器。尝试以下内容:

protected string EntityName 
{
  get { Request.GetRouteData().Values["controller"] as string; }
}

在构造函数运行之后,以及当你在子类方法中时,应该可以访问

答案 2 :(得分:1)

如果您需要Headers,可以使用HttpContext.Current.Request.Headers