Простой инжектор не может ввести зависимости в контроллеры Web API

Я пытаюсь создать базовый конструктор DI с помощью Simple Injector, и кажется, что он не может разрешить зависимости для контроллеров Web API.

У меня есть контроллер API в "API» папка, которая находится внеКонтроллеры» папка.Я также пытался поместить его в "Контроллеры» папка, но это, похоже, не имеет большого значения. Трассировка стека, которую я получаю, похожа на ту, что представлена вэтот вопрос.Я использую свежую установку "Простой инжектор MVC Quick Start " Пакет NuGet (v. 2.1.0).У меня есть базаSimpleInjectorWebApiDependencyResolver из документации, которая также совпадает с найденнойВот.Я использую Entity Framework и посмотрел наветка обсуждения об изменениях, чтобы правильно загрузить контекст.

Это не кажется проблемой, но я все еще получаю следующую ошибку:

Тип 'MyProject.API.ArticleController» не имеет конструктора по умолчанию

System.ArgumentException в

System.Linq.Expressions.Expression.New (тип Type) в System.Web.Http.Internal.TypeActivator.Create [TBase] (Type instanceType) в System.Web.Http.Dispatcher.DefaultHttpControllerActivator.GetInstanceOrActivator, запрос типа TypeHpegTyptTypeTyTept , Func`1 & активатор) в System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create (запрос HttpRequestMessage, HttpControllerDescriptor controllerDescriptor, тип controllerType)

Буду признателен, если кто-нибудь сможет предложить мне несколько советов о том, следует ли что-либо изменять из текущего состояния / порядка вызовов.

ArticleController (базовая структура):

public class ArticleController : ApiController
{
    private readonly IArticleRepository articleRepository;
    private readonly IUserRepository userRepository;
    private readonly IReleaseRepository releaseRepository;

    public ArticleController(IArticleRepository articleRepository, IUserRepository userRepository, IReleaseRepository releaseRepository)
    {
        this.articleRepository = articleRepository;
        this.userRepository = userRepository;
        this.releaseRepository = releaseRepository;
    }

    // GET api/Article
    public IEnumerable GetArticles(){ // code }

    // GET api/Article/5
    public Article GetArticle(int id){ // code }

    // PUT api/Article/5
    public HttpResponseMessage PutArticle(int id, Article article){ // code }

    // POST api/Article
    public HttpResponseMessage PostArticle(ArticleModel article){ // code }

    // DELETE api/Article/5
    public HttpResponseMessage DeleteArticle(int id){ // code }
}

SimpleInjectorInitializer:

public static class SimpleInjectorInitializer
{
    public static void Initialize()
    {
        var container = new Container();
        InitializeContainer(container);
        container.RegisterMvcControllers(Assembly.GetExecutingAssembly());
        container.RegisterMvcAttributeFilterProvider();
        container.Verify();

        DependencyResolver.SetResolver(new SimpleInjectorDependencyResolver(container));
    }

    private static void InitializeContainer(Container container)
    {
        container.Register();
        container.Register();
        container.Register();
    }
}

Global.asax.cs:

public class WebApiApplication : System.Web.HttpApplication
{
    private void ConfigureApi()
    {
        // Create the container as usual.
        var container = new Container();

        // Verify the container configuration
        // container.Verify();

        // Register the dependency resolver.
        GlobalConfiguration.Configuration.DependencyResolver =
                new SimpleInjectorWebApiDependencyResolver(container);
    }

    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        ConfigureApi();

        WebApiConfig.Register(GlobalConfiguration.Configuration);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
    }
}

Ответы на вопрос(1)

Ваш ответ на вопрос