2

我正在使用自定义角色和成员资格提供程序。两者都在命名空间中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" />

但错误信息保持不变。

我在这里做错了吗?

4

3 回答 3

3

尝试

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

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

于 2013-05-30T07:09:50.283 回答
1

如果 App_Code 文件夹中有角色提供程序类,则需要将类文件的“构建操作”属性更改为“编译”。

于 2013-11-20T15:08:35.103 回答
0

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

于 2014-03-19T06:46:52.793 回答