我有一个带有基本控制器的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 上面的代码出了什么问题?
答案 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