所以我有一个问题,老实说,我不太确定该怎么问。从本质上讲,我在运行本地代码时在我的本地计算机上可以正常运行一些代码。一旦将其发布到我们的开发Web服务器,它就会失败。我不确定这是IIS安装问题,web.config问题还是编码问题。

这是代码片段

    bool isMember = false;

    PrincipalContext ADDomain = new PrincipalContext(ContextType.Domain);
    UserPrincipal user = UserPrincipal.FindByIdentity(ADDomain, userID);

    if (user.IsMemberOf(ADDomain, IdentityType.Name, groupName.Trim()))
    {
        isMember = true;
    }

    return isMember;

我在其中输入用户名和组,它告诉我该用户是否是该组的成员。没问题。在我的机器上效果很好。我去把那个代码发布到了网络服务器上,但是当它成功的时候它就失败了
UserPrincipal user = UserPrincipal.FindByIdentity(ADDomain, userID);

它抛出此错误:



有什么想法可能会失败吗?

最佳答案

我的第一个猜测是:您在其下运行此代码的用户帐户没有查询Active Directory的必要权限。

要解决此问题,基本上,您需要从此更改构造函数:

PrincipalContext ADDomain = new PrincipalContext(ContextType.Domain);

(使用此代码运行时使用的当前默认凭据建立与AD的连接)

对此:
PrincipalContext ADDomain =
   new PrincipalContext(ContextType.Domain, "DOMAIN", useraccount, password);

并为您知道有足够特权来查询Active Directory的用户帐户提供用户名和密码。

关于C#Active Directory PrincipalContext/UserPrincipal.IsMemberOf错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8716347/

10-16 21:10