- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
所以我有一个问题,老实说我不太确定如何提出。本质上,当我运行它时,我有一些代码在我的本地机器上运行得非常好。一旦我将它发布到我们的开发 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);
它抛出这个错误:
[DirectoryServicesCOMException (0x80072020): An operations error occurred.]
System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail) +788
System.DirectoryServices.DirectoryEntry.Bind() +44
System.DirectoryServices.DirectoryEntry.get_AdsObject() +42
System.DirectoryServices.PropertyValueCollection.PopulateList() +29
System.DirectoryServices.PropertyValueCollection..ctor(DirectoryEntry entry, String propertyName) +63
System.DirectoryServices.PropertyCollection.get_Item(String propertyName) +163 System.DirectoryServices.AccountManagement.PrincipalContext.DoLDAPDirectoryInitNoContainer() +521217
System.DirectoryServices.AccountManagement.PrincipalContext.DoDomainInit() +51
System.DirectoryServices.AccountManagement.PrincipalContext.Initialize() +141
System.DirectoryServices.AccountManagement.PrincipalContext.get_QueryCtx() +42
System.DirectoryServices.AccountManagement.Principal.FindByIdentityWithTypeHelper(PrincipalContext context, Type principalType, Nullable`1 identityType, String identityValue, DateTime refDate) +29
System.DirectoryServices.AccountManagement.UserPrincipal.FindByIdentity(PrincipalContext context, String identityValue) +95
Cosmic.Web.Login.btnSubmit_Click(Object sender, EventArgs e) in C:\cosmic\Cosmic.Web\Login.aspx.cs:79
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +154
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3691
有什么地方可能会失败吗?
最佳答案
我的第一个猜测是:您在其下运行此代码的用户帐户没有查询 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/
这感觉像是一个非常基本的问题,因为这是我正在寻找的一个非常基本的功能。 我知道你可以做到这一点: ([Dimension].CurrentMember IS [Dimension].[AParticu
我有一个函数可以检查一个组是否是一个组的成员。我有 2 个函数变体,都没有按预期工作: public bool IsGroupGroupMember(GroupPrincipal gp, GroupP
为什么 Principal.IsMemberOf(GroupPrincipal) ( MSDN ) 在以下测试中为 Domain Computers 组返回假阴性? [TestMethod] publ
我正在尝试确定给定的本地用户帐户是否在本地管理员组中。在系统加入域之前一切正常。当加入域时抛出异常,提示未找到网络路径,但仅在查找本地非管理员帐户时才会抛出异常;如果测试帐户是本地管理员,则该方法返回
我正在尝试验证用户是否在“TestGroup”组中。用户是“TestGroup”组的一部分,即使我收到 retval = false @line(retVal = user.IsMemberOf(gr
所以我有一个问题,老实说我不太确定如何提出。本质上,当我运行它时,我有一些代码在我的本地机器上运行得非常好。一旦我将它发布到我们的开发 Web 服务器,它就会失败。我不确定这是 IIS 设置问题、we
我在自定义 Active Directory RoleProvider 中创建了以下方法: public override string[] GetRolesForUser(string userna
我对 OpenDj 上的“ismemberof”有一些疑问。 我想在 OpenDj 中有一个用户(比如“uid=jdoe,ou=people,dc=example,dc=com”),它可以做一个“is
类似于以下 MSDN 线程中的问题:http://social.msdn.microsoft.com/Forums/en-MY/csharplanguage/thread/4c9fea6c-1d0a-
我有 OpenID Connect 在 中配置OpenAM (OpenAm 是提供者)。现在我正在尝试检索 群组成员用户的 来自 用户信息端点 . 身份验证成功,我检索了 access_token、i
因此,我的要求是让在 Azure 计算机上运行的应用程序检查登录的特定 Azure 用户是否属于指定的 Azure 组。 我已为上述虚拟机启用托管服务身份。 MSI 我通过对 VM 上的图形资源使用以
我是一名优秀的程序员,十分优秀!