Search code examples
c#roleprovider

c# roles multiple providers cant call function


My role providers:

<roleManager enabled="true" cacheRolesInCookie="true" cookieName=".ASPROLES" defaultProvider="AspNetSqlRoleProvider">
      <providers>
        <clear/>
        <add connectionStringName="ConnectionString1" applicationName="/" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider,System.Web, Version=2.0.0.0, Culture=neutral,PublicKeyToken=xxx"/>
        <add connectionStringName="ConnectionString2" applicationName="/" name="AspNetSqlRoleProviderProduction" type="System.Web.Security.SqlRoleProvider,System.Web, Version=2.0.0.0, Culture=neutral,PublicKeyToken=xxx"/>
      </providers>
    </roleManager>

When I try to call AddUserToRole:

var roleProviderProduction = Roles.Providers["AspNetSqlRoleProviderProduction"];
roleProviderProduction.AddUserToRole(username, role);

I get this error:

Error 59 'System.Web.Security.RoleProvider' does not contain a definition for 'AddUserToRole' and no extension method 'AddUserToRole' accepting a first argument of type 'System.Web.Security.RoleProvider' could be found (are you missing a using directive or an assembly reference?)


Solution

  • You are mixing up RoleProvider and Roles. While there is a method AddUserToRole in Roles, RoleProvider only has AddUsersToRoles.

    You should use

    var  roleProviderProduction = Roles.Providers["AspNetSqlRoleProviderProduction"];
    roleProviderProduction.AddUsersToRoles(new string[]{username}, new string[]{role});
    

    or

    Roles.AddUserToRole(username, role);