wcf – 调用Roles.GetRolesForUser时的SqlRoleProvider:NullReferenceException

前端之家收集整理的这篇文章主要介绍了wcf – 调用Roles.GetRolesForUser时的SqlRoleProvider:NullReferenceException前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
场景:
使用sqlRoleProvider进行sql Server 2012数据库服务器身份验证的WCF服务. WCF托管在IIS7 Web服务器上.

请看这个错误

System.NullReferenceException: Object reference not set to an instance of an object.
at System.Web.Security.Roles.GetRolesForUser(String username)

RoleManagement已启用.

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

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

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

最好的祝福.

解决方法

blergh

谷歌搜索标签Stack Overflow,我发现这个网站:
http://www.lhotka.net/weblog/CallingRolesGetRolesForUserInAWCFService.aspx

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

解决此问题,请致电:

string[] roles = Roles.Provider.GetRolesForUser(ServiceSecurityContext.Current.PrimaryIdentity.Name);

代替

string[] roles = Roles.GetRolesForUser(ServiceSecurityContext.Current.PrimaryIdentity.Name);

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

猜你在找的MsSQL相关文章