根据这篇文章的描述定制的会员制提供商与系统信息库注射
我实现自定义成员与注射提供。
定义成员资格提供
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 1的属性UserRepository)请求CustomeMembershipProvider
如何解决。 ??