我继承了现有的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?
谢谢,