【问题标题】:Ninject and ASP.NET Identity 2.0Ninject 和 ASP.NET 标识 2.0
【发布时间】:2014-04-01 00:43:57
【问题描述】:

我刚刚将 ASP.NET 身份实体框架包从 1.0 升级到 2.0,现在其中一个 Ninject 绑定已损坏:

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()

我不确定是什么原因导致它破裂?

【问题讨论】:

    标签: c# entity-framework ninject asp.net-identity


    【解决方案1】:

    我们添加了一个新的基础 RoleStore 类,并将用户角色实体类型添加为泛型类型,所以不妨试试

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

    【讨论】:

    • 完美工作!谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    • 1970-01-01
    • 1970-01-01
    • 2015-05-29
    • 2016-05-25
    • 2015-05-17
    • 1970-01-01
    相关资源
    最近更新 更多