无法加载角色提供程序的类型

时间:2013-05-30 07:03:16

标签: c# .net asp.net-mvc-3 asp.net-membership

我正在使用自定义角色和成员资格提供程序。两者都在名称空间MyDomain.Infrastructure.Security

MyCustomMembershipProvider有文件名:MyCustomMembershipProvider.cs MyCustomMembershipRoleProvider具有文件名:MyCustomMembershipRoleProvider.cs

在webconfig内部我已经配置了部分以使用我的cystom提供程序,如:

<membership defaultProvider="MyCustomMembershipProvider">
  <providers>
    <clear/>
    <add name="MyCustomMembershipProvider"
         type="MyDomain.Infrastructure.Security"
         enablePasswordRetrieval="false"... />
  </providers>

<roleManager enabled="true"
             defaultProvider="MyDomain.Infrastructure.Security">
      <providers>
        <clear/>
        <add applicationName="/" name="MyCustomMembershipRoleProvider"
             type="MyDomain.Infrastructure.Security" />
      </providers>
    </roleManager>

即使它在构建时是相同的命名空间我在角色提供程序上遇到错误而不是成员资格提供程序

错误信息是:

  

分析程序错误消息:无法加载类型“MyDomain.Infrastructure.Security”。

第54行:

<add applicationName="/" name="MyCustomMembershipRoleProvider"
     type="MyDomain.Infrastructure.Security" />

更新: 如下面的答案建议我添加以下

<add applicationName="/" name="MyDomain.Infrastructure.Security.MyCustomMembershipRoleProvider, MyDomain.Infrastructure.Security" type="MyDomain.Infrastructure.Security" />

但错误信息仍然相同。

我在这里做错了吗?

3 个答案:

答案 0 :(得分:3)

尝试

type="MyDomain.Infrastructure.Security.MyCustomMembershipRoleProvider, MyDomain.Infrastructure.Security"

,给出程序集名称后,我假设它是MyDomain.Infrastructure.Security

答案 1 :(得分:1)

如果您在App_Code文件夹中有角色提供程序类,则需要将类文件的“Build Action”属性更改为“compile”。

答案 2 :(得分:0)

我已经解决了这个问题。框架有所不同,我的mvc项目在.net framework 4.0中,而Provider库项目解决方案在.net framework 4.5中。我通过将自定义提供程序解决方案的.net框架更改为4.0来解决此问题。