团结集装箱试图解决非注册的类型,抛出错误(Unity Container trying to res

2019-10-20 19:03发布

我继承了现有的ASP.Net MVC项目,利用一个统一的DI容器。 其所有登记的在web.config中定义。

当一个新的服务/类被引入到项目中,我创建它与接口一起,然后更新配置文件办理登记。 例如 :

 

<unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
    <assembly name="UnityDi.Contracts" />
    <assembly name="UnityDi.Domain" />
    <assembly name="UnityDi.Services" />
    <assembly name="UnityDi.Repositories" />
    <namespace name="UnityDi.Contracts" />
    <namespace name="UnityDi.Domain" />
    <namespace name="UnityDi.Services" />
    <namespace name="UnityDi.Repositories" />
    <container>
        <register type="Foo.Worker.Interfaces.IIndividualWorker, Foo.Worker" mapTo="Foo.Worker.Workers.IndividualWorker, Foo.Worker"></register>
    </container>
</unity>

当一个类或控制器需要IIndividualWorker,我与相关属性添加:

[Dependency]
public IIndividualWorker IndividualWorker { get; set; }

到目前为止,这工作得很好......

我现在已经打了一个问题,我不明白,我承认我的团结知识不是最深。

我创建了一个新的MVC Web应用程序,它会利用相同的后端层作为第一应用,如上所示。 我已经配置以同样的方式Web.Config中,所有的引用到位。 我得到的问题是,新的Web应用程序使用ASP.Net身份为它的安全机制(以前的应用程序有简单的会员)。

在注册一个新用户,使用标准的ASP.Net MVC认证模板,我得到的错误“ 当前类型,Microsoft.AspNet.Identity.IUserStore`1 [Foo.Web2.Models.ApplicationUser],是一个接口,不能构成。是否缺少类型映射?“

看来,统一是试图处理ApplicationUserManager类的参数

public ApplicationUserManager(IUserStore<ApplicationUser> store)

有没有解决的办法? 我可以得到统一独自离开这个(可能其他模板代码),只有设法解决那些我已经在我的定义.CONFIG?

谢谢,

Answer 1:

最后,我明确添加的IUserStore的登记

container.RegisterType(typeof(IUserStore<ApplicationUser>), typeof(UserStore<ApplicationUser>));

什么扔我是,除了统一似乎整个先前工作过的代码库影响到许多接口。 这种性质的任何更多的错误,我会一定要明确地注册有问题的接口。

我仍然怀疑,必须有选择,以保持团结仅限于所提供的注册,可以在任何统一高手指教?



文章来源: Unity Container trying to resolve non registered type, throwing error