ASP.NET MVC 3 Ninject自定义成员资格和角色提供 [英] ASP.NET MVC 3 Ninject Custom Membership and Role Provider

查看:211
本文介绍了ASP.NET MVC 3 Ninject自定义成员资格和角色提供的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好我有一些问题,启用自定义成员资格和角色提供程序,我得到了以下错误:

***说明:在当前Web请求的执行过程中发生未处理的异常。请查看有关错误的详细信息的堆栈跟踪以及它起源于code。

异常详细信息:System.InvalidOperationException:默认成员资格提供找不到

它指着我mvc3.ninject kernel.Inject(Membership.Provider)

我在app_start MVC3.Ninject:

 私有静态无效RegisterServices(内核的iKernel)
    {
        kernel.Inject(Membership.Provider);
        kernel.Inject(Roles.Provider);
        kernel.Bind&所述; IUnitOfWork方式>()到< EFContext方式>()InRequestScope();
        kernel.Bind&所述; IUzytkownicyRepository方式>()到< UzytkownicyRepository方式>()InRequestScope();    }

我的RoleProvider:

 公共类DziennikRoleProvider:RoleProvider
{
    [注入]
    私人IUzytkownicyRepository库{搞定;组;}

我的MembershipProvider:

 公共类DziennikMembershipProvider:的MembershipProvider
{
    [注入]
    私人IUzytkownicyRepository库{搞定;组; }

我的WebConfig文件:

 <会员defaultProvider =DziennikMembershipProvider>
  <供应商>
    <清/>
    <添加名称=DziennikMembershipProviderTYPE =Dziennik_MVC.Helpers.DziennikMembershipProvider,Dziennik_MVC的connectionStringName =EFDbContext
         的applicationName =//>
  < /供应商>
< /会员><型材>
  <供应商>
    <清/>
  < /供应商>
< / profile文件>< roleManager defaultProvider =DziennikRoleProvider启用=真cacheRolesInCookie =真>
  <供应商>
    <清/>
    <添加名称=DziennikRoleProviderTYPE =Dziennik_MVC.Helpers.DziennikMembershipProvider,Dziennik_MVC的connectionStringName =EFDbContext/>
  < /供应商>
< / roleManager>


解决方案

您必须安装前绑定的你注入提供商。

 私有静态无效RegisterServices(内核的iKernel)
{
    kernel.Bind&所述; IUnitOfWork方式>()到< EFContext方式>()InRequestScope();
    kernel.Bind&所述; IUzytkownicyRepository方式>()到< UzytkownicyRepository方式>()InRequestScope();    kernel.Inject(Membership.Provider);
    kernel.Inject(Roles.Provider);
}

Hi i got some problems enabling custom Membership and Role Provider, i got following error:

***Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.InvalidOperationException: Default Membership Provider could not be found.

It's pointing to my mvc3.ninject kernel.Inject(Membership.Provider)

My MVC3.Ninject in app_start:

private static void RegisterServices(IKernel kernel)
    {
        kernel.Inject(Membership.Provider);
        kernel.Inject(Roles.Provider);
        kernel.Bind<IUnitOfWork>().To<EFContext>().InRequestScope();
        kernel.Bind<IUzytkownicyRepository>().To<UzytkownicyRepository>().InRequestScope();

    }  

My RoleProvider:

public class DziennikRoleProvider : RoleProvider
{
    [Inject]
    private IUzytkownicyRepository repository { get; set;}

My MembershipProvider:

public class DziennikMembershipProvider : MembershipProvider
{
    [Inject]
    private IUzytkownicyRepository repository { get; set; }

My WebConfig file:

 <membership defaultProvider="DziennikMembershipProvider">
  <providers>
    <clear/>
    <add name="DziennikMembershipProvider" type="Dziennik_MVC.Helpers.DziennikMembershipProvider, Dziennik_MVC" connectionStringName="EFDbContext"
         applicationName="/" />
  </providers>
</membership>

<profile>
  <providers>
    <clear/>
  </providers>
</profile>

<roleManager defaultProvider="DziennikRoleProvider" enabled="true" cacheRolesInCookie="true">
  <providers>
    <clear />
    <add name="DziennikRoleProvider" type="Dziennik_MVC.Helpers.DziennikMembershipProvider, Dziennik_MVC" connectionStringName="EFDbContext" />
  </providers>
</roleManager>

解决方案

You have to setup the bindings before you inject the Providers.

private static void RegisterServices(IKernel kernel)
{
    kernel.Bind<IUnitOfWork>().To<EFContext>().InRequestScope();
    kernel.Bind<IUzytkownicyRepository>().To<UzytkownicyRepository>().InRequestScope();

    kernel.Inject(Membership.Provider);
    kernel.Inject(Roles.Provider);
}

这篇关于ASP.NET MVC 3 Ninject自定义成员资格和角色提供的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆