我有一个用C#编写的WCF服务,它对Active Directory中的用户和组对象执行操作。对于此服务可用的其中一项操作,我需要从特定用户中删除所有组。
我能够使用此代码执行此操作,但它需要超过30秒,我想避免扩展超时。
foreach (GroupPrincipal group in user.GetGroups(this._context))
{
// We've set the primary group to Domain Users so we want to skip this group now.
if (group.Name.ToUpper().Equals(DOMAIN_USERS.ToUpper()))
{
continue;
}
// Remove the user and save the group.
group.Members.Remove(user);
group.Save();
group.Dispose();
}
我也试过这段代码,但是我收到AD的错误,说“服务器不愿意执行请求。”
var userEntry = (DirectoryEntry)user.GetUnderlyingObject();
userEntry.Properties["memberOf"].Clear();
userEntry.CommitChanges();
userEntry.Dispose();
如何才能提高第一个代码块的效率?是否有其他方法可以从我未考虑的所有组中删除用户?