当我尝试使用Asp.Net Identity RoleStore并使用StructureMap作为DI容器时,UserStore工作正常,但RoleStore在编译时会出现错误。
//works fine
cfg.For<IUserStore<ApplicationUser>>().Use<UserStore<ApplicationUser>>();
//does NOT work
cfg.For<IRoleStore<IdentityRole>>().Use<RoleStore<IdentityRole>>();
抛出以下错误
类型"Microsoft.AspNet.Identity.EntityFramework.RoleStore"不能用作泛型类型中的类型参数"TConcreteType"或方法"StructureMap.Configuration.DSL.Expressions.CreatePluginFamilyExpression.Use()"。没有来自的隐式引用转换"Microsoft.AspNet.Identity.EntityFramework.RoleStore"到"Microsoft.AspNet.Identity.IOleStore".
因为RoleStore<TRole>
不是从IRoleStore<TRole>
实现的。实际上它是从CCD_ 3实现的。因此,请尝试以下操作:
cfg.For<IRoleStore<IdentityRole,string>>().Use<RoleStore<IdentityRole>>();