C# 具有依赖项注入的MVC API控制器错误

C# 具有依赖项注入的MVC API控制器错误,c#,asp.net-mvc,asp.net-web-api,dependency-injection,C#,Asp.net Mvc,Asp.net Web Api,Dependency Injection,我有一个简单的控制器,在这里我使用像这样的interfaec public class HomeController : Controller { // GET: Home private IHotelService hotelService; public HomeController(IHotelService _hotelService) { hotelService = _hotelService; } } 它工作得很好,但当我使

我有一个简单的控制器,在这里我使用像这样的interfaec

public class HomeController : Controller
{
    // GET: Home
    private IHotelService hotelService;
    public HomeController(IHotelService _hotelService)
    {
        hotelService = _hotelService;
    }
}
它工作得很好,但当我使用API控制器时,就像

public class RoomController : BaseApiController
{
    private IHotelService hotelService;
    public RoomController(IHotelService _hotelService)
    {
        hotelService = _hotelService;
    }
它给了我一个错误

正如所指出的(以及在其他几个答案中所指出的),您很可能没有向Web API注册DI容器。WebAPI是一个独立于MVC的框架,因此它有一个独立的配置,包括依赖注入

所以,你需要设置

GlobalConfiguration.Configuration.DependencyResolver = MyDependencyResovler(container);

在应用程序启动时。如何执行此操作的详细信息取决于您实际使用的容器,以及您是使用stock dependency resolver还是使用自己的roll,如中所示。

请在此处发布错误消息或日志尝试创建“RoomController”类型的控制器时出错。确保控制器有一个无参数的公共构造函数。如果您阅读这里,那么您可以理解为什么错误消息是创建一个没有任何参数的构造函数。您如何注入服务?您使用的是什么DI框架?我使用的是用于DI的ninject web common,它可以与普通的web控制器一起工作,但与api控制器不一起工作,这是实际的问题