Dependency injection 无法使用webapi控制器中的Unity.AspNet.Mvc解析依赖项

Dependency injection 无法使用webapi控制器中的Unity.AspNet.Mvc解析依赖项,dependency-injection,asp.net-mvc-5,unity-container,Dependency Injection,Asp.net Mvc 5,Unity Container,我正在使用Asp.NETMVC5,并试图连接我对WebAPI控制器的依赖关系,但它不起作用,并且说控制器需要一个无参数构造函数 我已经将unity容器更新为v4,这意味着更新了一些其他引用,即unity.Abstracts也是v4 我使用的是unity.mvc,而不是unity.mvc5 在UnityConfig中,我有 public static class UnityConfig { private static readonly Lazy<IUnityContainer>

我正在使用Asp.NETMVC5,并试图连接我对WebAPI控制器的依赖关系,但它不起作用,并且说控制器需要一个无参数构造函数

我已经将unity容器更新为v4,这意味着更新了一些其他引用,即unity.Abstracts也是v4

我使用的是unity.mvc,而不是unity.mvc5

在UnityConfig中,我有

public static class UnityConfig
{
    private static readonly Lazy<IUnityContainer> Container = new Lazy<IUnityContainer>(InitialiseContainer, LazyThreadSafetyMode.ExecutionAndPublication); 

    public static IUnityContainer ConfiguredContainer()
    {
        return Container.Value;
    }

    private static IUnityContainer InitialiseContainer()
    {
        var container = new UnityContainer();        

        //DependencyResolver.SetResolver(new Unity.Mvc5.UnityDependencyResolver(container));
        //GlobalConfiguration.Configuration.DependencyResolver = new Unity.WebApi.UnityDependencyResolver(container);                                             

        // Auth
        container.RegisterType<IAuthenticationManager>(new InjectionFactory(c => HttpContext.Current.GetOwinContext().Authentication));            
        container.RegisterType<ApplicationUserManager>(new InjectionFactory(c => HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>()));
        container.RegisterType<IUserStore<LiApplicationUser>> (new InjectionFactory(c => new UserStore<LiApplicationUser>(new ApplicationIdentityDbContext())));
        // Repository
        container.RegisterType<LeisureInsureEntities>(new InjectionFactory(c => ContextFactory.Context()));
        container.RegisterType<ICar, Volvo>();

        DependencyResolver.SetResolver(new UnityDependencyResolver(container));

        return container;
    }       
}

谢谢

您需要Unity.AspNet.WebApi适配器来配置APIController

小心别把包裹弄混了。其中一些不是由同一个项目所有者Unity.Mvc5、Unity.WebAPI创建的。我没有用过这些,所以我不能评论它的适用性

我有另一个使用v5.10和的示例

这是packages.config

<package id="Unity" version="5.10.2" targetFramework="net461" />
<package id="Unity.Abstractions" version="4.1.2" targetFramework="net461" />
<package id="Unity.AspNet.WebApi" version="5.10.0" targetFramework="net461" />
<package id="Unity.Container" version="5.10.2" targetFramework="net461" />
<package id="Unity.Mvc" version="5.10.0" targetFramework="net461" />
<package id="Unity" version="5.10.2" targetFramework="net461" />
<package id="Unity.Abstractions" version="4.1.2" targetFramework="net461" />
<package id="Unity.AspNet.WebApi" version="5.10.0" targetFramework="net461" />
<package id="Unity.Container" version="5.10.2" targetFramework="net461" />
<package id="Unity.Mvc" version="5.10.0" targetFramework="net461" />