我编写了一些代码来使用C#管理AD LDS容器的成员资格。在我们的测试中,如果添加了某些人,则在尝试将更改提交到DirectoryEntry
时会引发错误。如果这些特定用户未包含在成员资格中,则代码可以正常工作。
生成的详细异常是:
System.DirectoryServices.DirectoryServicesCOMException未处理
的HResult = -2147016657
消息=发生约束违规。源=的System.DirectoryServices
错误码= -2147016657
ExtendedError = 8373
ExtendedErrorMessage = 000020B5:AtrErr:DSID-03152804,#1:
0:000020B5:DSID-03152804,问题1005(CONSTRAINT_ATT_TYPE),数据0,Att 1f(成员)堆栈跟踪:
在System.DirectoryServices.DirectoryEntry.CommitChanges()
在C:\ Projects \ ET \ Shared \ HCI.DirectoryServices \ AdLds \ Role.cs中的HCI.DirectoryServices.AdLds.Role.Save()中:第186行 在C:\ Projects \ ET \ ADManager \ HCI.Test.ADManager \ Program.cs中的HCI.Test.ADManager.PasswordModifier.Main()中:第303行 在System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly,String [] args)
在Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext,ContextCallback callback,Object state,Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback callback,Object state,Boolean preserveSyncCtx)
在System.Threading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback回调,对象状态)
在System.Threading.ThreadHelper.ThreadStart()
根据我在线阅读的内容,此消息表明该组的成员属性存在问题,但我不知道它可能是什么。正如我所说,当排除这些特定用户时,相同的代码可以正常工作。我无法找到问题用户的任何共性。
对于最终的踢球者,如果我使用ADSI Edit手动将这些用户添加到容器中,我可以使用我的代码执行任何我想要的操作:删除,添加,添加到其他容器等等。
建议表示赞赏。