我在ASP.Net MVC网站上运行以下代码:
using (var ctx = new PrincipalContext(ContextType.Domain, DOMAIN))
using (var userPrincipal = UserPrincipal.FindByIdentity(ctx, principal.Identity.Name))
using (var groups = userPrincipal.GetAuthorizationGroups())
代码使用自定义RoleProvider,变量“principal”是HttpContext.Current.User。 DOMAIN是我的本地域名。
当我登录网站时此代码正常工作,但如果我以几个测试用户之一登录,则会在最后一行引发异常。
While trying to retrieve the authorization groups, an error (5) occurred.
测试用户对域的权限较少,但是是活动目录中的用户。我尝试使用提供用户名和密码的替代构造函数创建PrincipalContext,但它对行为没有任何影响。
这在我的开发机器上以及在单独的登台服务器上都会发生,所以我认为它与本地权限没有任何关系。我也没有看到它如何与用户的权限相关,因为我希望在IIS App Pool用户(模拟被关闭)或者可能是在PrincipalContext构造函数中指定的用户进行活动目录请求。 / p>
关于感恩内容的任何建议。
答案 0 :(得分:3)
他们是Active Directory中的用户是不够的。 IIS应用程序池用户需要是Windows授权访问组的成员才能执行GetAuthorizationGroups。
在这里回答:While trying to retrieve the authorization groups, an error (5) occurred