c#从基本apicontroller派生 - 在基类中,Request对象为null

时间:2013-06-18 08:58:27

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

我有一些具有类似行为的api控制器。我已经创建了一个公共基类,它本身就是一个api控制器。在我的派生类中,我有一些假设应该在基本api控制器中解决(例如一些常见的头值)。但我的问题是在基础ApiController中“请求”对象为空!

为什么这样,我该如何解决? (在构造派生类时非常重要,因为我根据标题值分配值)

代码示例

BaseClass : ApiController
{
public BaseClass()
{
  _header1 =  Request.Headers.GetValues("header1");
}
}

DerivedClass : BaseClass
{
// getting error here because the base class isn't constructed because the Request object is null! and errors are thrown
}

1 个答案:

答案 0 :(得分:8)

这与继承无关,它与ApiController尚未初始化的事实有关,并且您试图从构造函数中访问Request对象。

如果你需要在你的控制器中初始化某些东西,你应该覆盖Initialize方法并在那里进行(记得打电话到基地!)。