2011-09-13 77 views
0
string ldapPath = "ldap://db.debian.org:389/uid=ma,ou=users,dc=debian,dc=org"; 
      DirectoryEntry dEntry = new DirectoryEntry(ldapPath, null, null, AuthenticationTypes.Anonymous); 

      DirectorySearcher search = new DirectorySearcher(dEntry); 

      search.Filter = "((objectClass=*))"; 
      search.FindAll(); 

我正在使用上面的代碼從我的C#表單應用程序。每當我調用FindAll()時,我都會收到如下的異常。使用C#DirectoryServices訪問活動目錄時出現問題

System.Runtime.InteropServices.COMException了未處理
消息= 「未知錯誤(0x80005000)」
源= 「的System.DirectoryServices」 錯誤碼= -2147463168
堆棧跟蹤: 在System.DirectoryServices.DirectoryEntry .Bind(布爾 throwIfFail) 在System.DirectoryServices.DirectoryEntry.Bind() 在System.DirectoryServices.DirectoryEntry.get_AdsObject() 在System.DirectoryServices.DirectorySearcher.FindAll(布爾 findMoreThanOne) at System.DirectoryServices.DirectorySearcher.FindAll() at LDAPApp.Form1.button1_Click(Object sender,EventArgs e) H:\ Raj \ LDAP \ LDAPApp \ LDAPApp \ Form1.cs:line 37 at System.Windows。在System.Windows.Forms.Control.WmMouseUp上System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) System.Windows.Forms.Button.OnClick(EventArgs e) Forms.Control.OnClick(EventArgs e) (消息&米, MouseButtons按鈕,點擊的Int32) 在System.Windows.Forms.Control.WndProc(消息&米) 在System.Windows.Forms.ButtonBase.WndProc(消息&米) 在System.Windows。形式。 Button.WndProc(消息&米) 在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(消息&米) 在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(消息&米) 在系統。 Windows.Forms.NativeWindow.DebuggableCallback(IntPtr的 的HWND,MSG的Int32,IntPtr的WPARAM,IntPtr的LPARAM) 在 System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG & MSG) 在 System.Windows.Forms.Application.ComponentManager .System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID,Int 32原因,的Int32 pvLoopData) 在 System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(的Int32 原因,ApplicationContext的上下文) 在 System.Windows.Forms.Application.ThreadContext.RunMessageLoop(的Int32 原因,ApplicationContext的上下文) at System.Windows.Forms.Application.Run(Form mainForm) at LDAPApp.Program.Main() H:\ Raj \ LDAP \ LDAPApp \ LDAPApp \ Program.cs:line 18 at System.AppDomain._nExecuteAssembly (Assembly assembly, String [] args) at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity,String [] args) 在 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 在System.Threading.ThreadHelper.ThreadStart_Context(對象 狀態) 在System.Threading.ExecutionContext.Run(的ExecutionContext 的ExecutionContext,ContextCallback回調,對象狀態) 在System.Threading.ThreadHelper。ThreadStart()
InnerException:

請告訴我在這裏做錯了什麼。

在此先感謝。

+0

這並不完全適用於你的情況,但在我的情況下,當我有尾隨「/」並且不需要包含專有名稱時遇到此錯誤。例如:LDAP://db.debian.org:389有效,但LDAP://db.debian.org:389 /使用ErrorCode -2147463168的例外。 –

回答

1

LDAP路徑中的LDAP協議標識符(LDAP://)必須是大寫的。 如果以小寫字母寫LDAP協議標識符,則會出現0x80005000錯誤 代碼(未知錯誤)。下面的代碼片段應該工作:

string ldapPath = "LDAP://db.debian.org:389/uid=ma,ou=users,dc=debian,dc=org"; 
     DirectoryEntry dEntry = new DirectoryEntry(ldapPath, null, null, AuthenticationTypes.Anonymous); 

DirectorySearcher search = new DirectorySearcher(dEntry); 

search.Filter = "((objectClass=*))"; 
search.FindAll(); 

希望,這有助於。

相關問題