我使用了这个页面中的示例,将用户添加到Active Directory组中,但在执行以下内容时出现异常,异常信息为“服务器不愿意处理请求”:
dirEntry.Properties [ "member"] .Add(userDn);
我使用了这个页面中的示例,将用户添加到Active Directory组中,但在执行以下内容时出现异常,异常信息为“服务器不愿意处理请求”:
dirEntry.Properties [ "member"] .Add(userDn);
我曾经遇到过类似的问题,我试图将一个成员添加到一个组中。特别是,我试图将一个组添加到另一个组中,并得到了同样有用的错误信息:“服务器不愿意处理该请求”。提供给我解决方案的答案并没有起作用。
对我来说,我无法将一个组添加到我的组中,是因为我尝试向其中添加成员的组是“全局”范围的组,而它需要是“通用”范围的组。希望这能帮助某些人。
这个问题让我花费了很多时间来解决。首先,错误信息看起来像是一个玩笑。其次,除了该消息外没有其他信息。
无论如何,我通过以下方法解决了它:
确保 userDn
包含整个路径(例如,"LDAP://server-address/CN=" + userDn + ",OU=optional,DC=your-domain,DC=com"
),这实际上非常重要,如果您不提供完整路径,将会抛出一个 HRESULT 异常: 0x80005000。
用 entry.Invoke("Add", new object[] { userDn });
替换 dirEntry.Properties["member"].Add(userDn);
。
然后我想删除一个用户,我期望 entry.Invoke("Remove", new object[] { userDn });
能够起作用。然而,这个“恶魔般”的 AD 只有在使用小写的 "remove"时才会起作用,所以 entry.Invoke("remove", new object[] { userDn });
对我起了作用。
ad.example.com
,而我正在尝试使用路径CN=Users,DC=example,DC=net
创建一个组,其中一个是.com,另一个是.net - 它们不匹配。我需要更正我的组以使其匹配。我的组路径应该是CN=Users,DC=example,DC=com
。ldapwiki.com描述了“服务器不愿意处理请求”的潜在原因。检查您的异常的ExtendedErrorMessage属性以确定适用的内容。在我的情况下,“00002145:SvcErr:DSID-031A1254,问题5003(WILL_NOT_PERFORM)”。以下行解决了此问题:
ent.Properties["groupType"].Value = 8;
countryCode
属性。 - Kiquenet小心一点,因为.properties("distinguished Name")
的开头可能与.properties("cn")
不同。如果用户在.properties("cn")
中使用了,
或;
,那么.properties("distinguished Name")
的开头将是带有\,
或\;
的用户名。
如果您尝试将通过.properties("cn")
找到的用户添加到组中,可能会出现错误。
经过多日的搜索,我终于找到了问题所在。当您将用户添加到组中时,必须设置“可区分名称”,而不是LDAP路径。
您必须像这样编写:
ent.Properties["member"].Add("CN=YourUserName,OU=optional,DC=yourdomain,DC=com");
这是错误的代码:
ent.Properties["member"].Add("LDAP://CN=YourUserName,OU=optional,DC=yourdomain,DC=com");
当你移除主干以保存这个规则时
ent.Properties["member"].Remove("CN=YourUserName,OU=optional,DC=yourdomain,DC=com");
附言:ent 是组的 DirectoryEntry 对象