让WCF加载自定义角色提供程序时出错

本文关键字:程序 出错 角色 WCF 加载 自定义 | 更新日期: 2023-09-27 18:09:04

我一直在尝试为我的WCF服务获得一个自定义角色提供程序。它们托管在IIS 7中,但无论我怎么做,似乎都无法让它们真正工作。我刚得到无法找到默认角色提供程序。错误。我的网络。配置如下:

  <system.web>
    <compilation debug="false" targetFramework="4.0" />
    <roleManager enabled="true" defaultProvider="CustomValidators.WaveRoleProvider, CustomValidators">
      <providers>
        <clear/>
        <add name="test" type="CustomValidators.WaveRoleProvider, CustomValidators"/>
      </providers>
    </roleManager>
  </system.web>

提供RoleProvider的实际功能如下:

namespace CustomValidators
{
  public class WaveRoleProvider : RoleProvider
  {
    public override string[] GetRolesForUser(string username)
    {
      return string[0];
    }
    public override bool IsUserInRole(string username, string roleName)
    {
      return true;
    }
    public override void AddUsersToRoles(string[] usernames, string[] roleNames)
    {
      return;
    }
    public override string ApplicationName
    {
      get
      {
        return "test";
      }
      set
      {
      }
    }
    public override void CreateRole(string roleName)
    {
      return;
    }
    public override bool DeleteRole(string roleName, bool throwOnPopulatedRole)
    {
      return true;
    }
    public override string[] FindUsersInRole(string roleName, string usernameToMatch)
    {
      return new string[0];
    }
    public override string[] GetAllRoles()
    {
      return new string[0];
    }
    public override string[] GetUsersInRole(string roleName)
    {
      return new string[0];
    }
    public override void RemoveUsersFromRoles(string[] usernames, string[] roleNames)
    {
      return;
    }
    public override bool RoleExists(string roleName)
    {
      return true;
    }
  }
}

显然,我最终将用实际的逻辑填充所有这些,而不仅仅是返回虚拟数据,但这至少应该加载。

我已经检查过了,IIS确实像它应该的那样加载程序集,如果我重命名类或程序集,它会产生不同的错误,所以我很确定一切都应该加载,但无论我尝试什么,我总是找不到默认角色提供程序。我一直在谷歌上搜索这个,并在Stack Overflow上查看,但我似乎找不到这是为什么。我知道现在我的类是非常基础的,但是

让WCF加载自定义角色提供程序时出错

修复了我自己的问题。问题是,我应该在defaultProvider中指向我的提供者的名称,而不是类。

<system.web>
    <compilation debug="false" targetFramework="4.0" />
    <roleManager enabled="true" defaultProvider="test">
      <providers>
        <clear/>
        <add name="test" type="CustomValidators.WaveRoleProvider, CustomValidators"/>
      </providers>
    </roleManager>
  </system.web>