Web api中的请求始终为null?

Moh*_*yan 6 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

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

mat*_*att 7

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

protected string EntityName 
{
  get { Request.GetRouteData().Values["controller"] as string; }
}
Run Code Online (Sandbox Code Playgroud)

这应该是访问后,在构造上运行,当你在子类中的方法是.


Tho*_*ler 6

你不能RequestController's'tor中使用这个属性.它在实际请求被框架移交给它之前被调用.

  • 请求的URL:no(在使用action方法之前无法获取它).具体控制器类型:只需使用'typeof(this)'. (2认同)