Unity没有注册

时间:2014-07-09 15:27:47

标签: model-view-controller asp.net-web-api dependency-injection unity-container

我在我的MVC应用中使用了统一性

我的Bootstapper.cs文件中有以下RegisterTypes方法:

public static void RegisterTypes(IUnityContainer container)
    {
        container.RegisterType<AccountController>(new InjectionConstructor());

        container.RegisterType<IModelContext, ModelContext>();
        container.RegisterType<IModelRepository, ModelRepository>();
    }

我有以下控制器:

public class APIScoresController : ApiController
    {
        private IModelRepository _repo;
        public APIScoresController(IModelRepository repo)
        {
            _repo = repo;
        }

        public IEnumerable<Result> Get()
        {
            return _repo.GetResults();
        }
    }

我有以下型号回购:

public class ModelRepository : IModelRepository
    {
        ModelContext _ctx;

        public ModelRepository(ModelContext ctx)
        {
            _ctx = ctx;
        }

        public IQueryable<DomainClasses.Result> GetResults()
        {
            return _ctx.Results;
        }
    }

当我尝试在APIScoresController上执行GET时,我得到以下异常:

An error occurred when trying to create a controller of type 'APIScoresController'. Make sure that the controller has a parameterless public constructor

我希望团结一致来创建所需的ModelContext和ModelRepository对象。任何想法为什么不这样做?

1 个答案:

答案 0 :(得分:0)

由需要不同版本system.web.http的web api注册引起的问题。我试图将web api添加到现有的mvc5应用程序 - 糟糕的主意!我进入了一种dll地狱的形式,这是我从VB6 COM时代以来没有经历过的。最后,我的解决方案是使用web api项目创建一个新的解决方案,然后重新适应mvc项目。