场景:
使用sqlRoleProvider进行sql Server 2012数据库服务器身份验证的WCF服务. WCF托管在IIS7 Web服务器上.
使用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);