2014-04-01 67 views
6

我刚刚升级1.0的ASP.NET标识实体框架包2.0和Ninject绑定一个现在分成:Ninject和ASP.NET 2.0身份

kernel.Bind<IUserStore<User>>().To<UserStore<User>>(); 
kernel.Bind<UserManager<User>>().ToSelf(); 
kernel.Bind<IRoleStore<IdentityRole>>().To<RoleStore<IdentityRole>>(); 
kernel.Bind<RoleManager<IdentityRole>>().ToSelf(); 

第二个最后一个是给这个错误上编译:

类型“Microsoft.AspNet.Identity.EntityFramework.RoleStore”不能被用作在通用类型或方法“Ninject.Syntax.IBindingToSyntax.To()”类型参数“TImplementation”。

没有从'Microsoft.AspNet.Identity.EntityFramework.RoleStore'到'Microsoft.AspNet.Identity.IRoleStore'的隐式引用转换。

这些都是一些类所涉及的声明:

public interface IRoleStore<TRole> : IRoleStore<TRole, string>, IDisposable where TRole : IRole<string> 

public class RoleStore<TRole, TKey, TUserRole> : IQueryableRoleStore<TRole, TKey>, IRoleStore<TRole, TKey>, IDisposable where TRole : IdentityRole<TKey, TUserRole>, new() where TUserRole : IdentityUserRole<TKey>, new() 

我不知道是什么原因造成它打破?

回答

8

我们增加了一个新的基类Rolestore的增加和用户角色的实体类型为泛型类型,所以也许尝试

kernel.Bind<IRoleStore<IdentityRole, string>>().To<RoleStore<IdentityRole, string, IdentityUserRole>(); 
+0

是固定的。谢谢。 – user380689

+0

工作完美!谢谢。 – carzogliore

+1

只是正面向上,错过了关闭> ..... IdentityUserRole >>(); – J3RM