C# роли нескольких провайдеров не могут вызвать функцию

Мои поставщики ролей:

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

Когда я пытаюсь вызвать AddUserToRole:

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

Я получаю эту ошибку:

Ошибка 59 "System.Web.Security.RoleProvider" не содержит определения для "AddUserToRole", и нет метода расширения "AddUserToRole", принимающего первый аргумент типа "System.Web.Security.RoleProvider" (вы пропускаете a используя директиву или ссылку на сборку?)

1 ответ

Решение

Вы смешиваете RoleProvider и Roles. Пока есть метод AddUserToRole в Roles, RoleProvider только имеет AddUsersToRoles.

Вы должны использовать

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

или же

Roles.AddUserToRole(username, role);
Другие вопросы по тегам