根据本文描述custom-membership-provider-with-repository-injection
我实现了通过注入提供的自定义会员资格。
自定义会员提供者
using Ninject;
public class CustomMembershipProvider : MembershipProvider
{
[Inject]
public IUserRepository UserRepository { get; set; }
[...]
自定义角色提供者
using Ninject;
public class CustomRoleProvider : RoleProvider
{
[Inject]
public IUserRoleRepository UserRoleRepository { get; set; }
[...]
在Web.Config中
<membership defaultProvider="CustomsMembershipProvider">
<providers>
<clear/>
<add name="CustomsMembershipProvider" type="namespace.CustomsMembershipProvider"/>
</providers>
</membership>
<roleManager enabled="true" defaultProvider="customRoleProvider">
<providers>
<clear/>
<add name="customRoleProvider" type="namespace.customRoleProvider"/>
</providers>
</roleManager>
现在在NinjectWebCommon
private static IKernel CreateKernel()
{
var kernel = new StandardKernel();
kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
RegisterServices(kernel);
return kernel;
}
private static void RegisterServices(IKernel kernel)
{
[...]
kernel.Bind<IUserRepository>().To<UserRepository>();
kernel.Bind<IUserRoleRepository>().To<UserRoleRepository>();
// Inject user & role repository into our custom membership & role providers.
kernel.Inject(Membership.Provider);
kernel.Inject(Roles.Provider);
}
当我运行应用程序时出现错误
在应用程序的预启动初始化阶段不能调用此方法。
从这 kernel.Inject(Membership.Provider);
条线
但是如果我将内核设置放在Application_Start中
我得到以下错误
激活 IUserRepository 时出错 没有匹配的绑定可用,并且类型不是自绑定的。激活路径: 2) 将依赖 IUserRepository 注入到 CustomMembershipProvider 类型的属性 UserRepository 1) 对 CustomeMembershipProvider 的请求
如何解决。??