加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 06:58:52 所属栏目:MsSql教程 来源:网络整理
导读:场景: 使用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.GetRoles
场景:
使用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是在中间添加的.添加后,它工作正常.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读