SqlRoleProvider:调用Roles.GetRolesForUser时出现NullReferenceException

Obe*_*lix 7 authentication wcf iis-7 sqlroleprovider sql-server-2012

场景:使用SqlRoleProvider进行Sql Server 2012数据库服务器身份验证的WCF服务.WCF托管在IIS7 Web服务器上.

请看这个错误:

System.NullReferenceException:未将对象引用设置为对象的实例.
在System.Web.Security.Roles.GetRolesForUser(String username)

RoleManagement已启用.

在我的本地开发机器(服务器2012,iis7)上,这工作正常.当我登录并调用该方法时,将检索角色.

在另一台服务器(测试环境)上,它无法正常工作.我可以登录(用户通过用户身份验证并通过sql server数据库)但是当我尝试检索该用户的角色时,我得到一个nullreferenceexception.

这怎么可能,有没有人有任何线索可以解决这个问题?

最好的祝福.

Obe*_*lix 14

blergh

谷歌搜索标签Stack Overflow提供了我来到这个网站:http: //www.lhotka.net/weblog/CallingRolesGetRolesForUserInAWCFService.aspx

简而言之:显然在.net 3.5和.net 4之间出现了一些问题.

要解决此问题,请致电:

string[] roles = Roles.Provider.GetRolesForUser(ServiceSecurityContext.Current.PrimaryIdentity.Name);
Run Code Online (Sandbox Code Playgroud)

代替

string[] roles = Roles.GetRolesForUser(ServiceSecurityContext.Current.PrimaryIdentity.Name);
Run Code Online (Sandbox Code Playgroud)

不同之处在于.Provider中间添加的内容.添加后,它工作正常.