2017-02-14 6 views
0

私の役割プロバイダー: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); 

私はこのエラーを取得する:

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

+0

を使用する必要がありますか? – wkl

+0

いいえ:https://msdn.microsoft.com/en-us/library/system.web.security.roles.addusertorole%28v=1.0%29.aspx?f=255&MSPPError=-2147217396 – atroul

+0

混乱しています[RoleProvider](https://msdn.microsoft.com/en-us/library/system.web.security.roleprovider(v = vs.110).aspx)および[Roles](https://msdn.microsoft。 com/ja-us/library/system.web.security.roles(v = vs.110).aspx)を参照してください。下の私の答えを見てください。 – wkl

答えて

0

あなたが混合されていますRoleProviderおよびRoles。 にはAddUserToRoleのメソッドがありますが、RoleProviderAddUsersToRolesしか持っていません。

あなたは `AddUsersToRoles`と呼ばれる方法ではありません

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

または

Roles.AddUserToRole(username, role); 
+0

なぜですか? AddUserToRoleはAddUserToRoleと同じ関数ではありません。特定の(デフォルトではない)ロールプロバイダでAddUserToRoleを使用できないのはなぜですか?申し訳ありませんが、これは新しく、 – atroul

+0

です。これは 'RoleProvider'クラスで定義されていないためです。確かに、マイクロソフトが単一のユーザーのための方法を単一の役割で定義することは可能でしたが、明らかにそうしないことに決めました。とにかく、パラメータを 'string []'にラップして 'AddUsersToRoles'を呼び出すことは問題ありません。 – wkl

関連する問題