0

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?)

atroul
  • 51
  • 1
  • 13
  • Isn't the method called `AddUsersToRoles`? – wkl Feb 14 '17 at 12:55
  • no: https://msdn.microsoft.com/en-us/library/system.web.security.roles.addusertorole%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396 – atroul Feb 14 '17 at 12:58
  • You are mixing up [RoleProvider](https://msdn.microsoft.com/en-us/library/system.web.security.roleprovider(v=vs.110).aspx) and [Roles](https://msdn.microsoft.com/en-us/library/system.web.security.roles(v=vs.110).aspx). See my answer below. – wkl Feb 14 '17 at 13:02

1 Answers1

0

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);
wkl
  • 1,896
  • 2
  • 15
  • 26
  • why? AddUserToRole is not the same function with AddUserToRole. Why I can't use AddUserToRole with specific (not the default) role provider? Sorry I am quite new to this – atroul Feb 14 '17 at 13:05
  • Because it is not defined in `RoleProvider` class. Sure it would have been possible for Microsoft to define a method for a single user in a single role, they obviously decided not to do so. Anyway, it's no problem to wrap your parameters in to `string[]` and call `AddUsersToRoles`. – wkl Feb 14 '17 at 13:07