根据modifytimestamp属性从Active Directory获取用户 - 生成错误

时间:2010-01-21 11:28:17

标签: c# ldap

我有一个查询来根据modifytimestamp属性获取广告用户。

string datetime = acc.ToUniversalTime().ToString("yyyyMMddHHmmss") + ".OZ";
  "(&(objectClass=User)(objectCategory=User)
  (userAccountControl:1.2.840.113556.1.4.803:=2)(modifyTimestamp<=" + datetime + 
  "))";

上述查询在Windows Server 2008R2中生成以下错误,但它的工作原理为    在其他Windows Server OS中很好

错误:

   The Server does not support the requested critical extension
   at System.DirectoryServices.SearchResultCollection.ResultsEnumerator.MoveNext()
   at DisabledUsers.Program.GetDisabledUsers(String tag, Int32 days) in C:\Users\hari\Documents\Visual Studio 2010\Projects(C#)\DisabledUsers\DisabledUsers\Program.cs:line 37
   at DisabledUsers.Program.Main(String[] args) in C:\Users\hari\Documents\Visual Studio 2010\Projects(C#)\DisabledUsers\DisabledUsers\Program.cs:line 14
   at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
   at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
   at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()

2 个答案:

答案 0 :(得分:0)

您粘贴的代码似乎在第一行的末尾有一个分号,这会使较低行的字符串不属于任何内容。如果这不是一个错误(或者至少只是你的代码粘贴错误,而不是原始代码中的错误),我不熟悉AD查询,但我已经看到了UTC结尾的DATETIME标记,只有一个字母“Z”(之前没见过“.OZ”)。此外,确认该功能不希望日期和时间部分之间有更多字符(例如,时间部分之间的日期部分和冒号之间的连字符,以及之间的空格等)。

答案 1 :(得分:0)

在发布的代码中,第一行的日期时间字符串末尾有.OZ(字母O Z)。你希望它是.0Z(零Z)。