Проблема при доступе к активному каталогу с помощью C # DirectoryServices

  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 (), я получаю исключение, как показано ниже.

Скажите, пожалуйста, что я здесь делаю не так?

Заранее спасибо.

Идентификатор протокола LDAP (LDAP: //) в вашем пути LDAP должен быть в верхнем регистре. Если вы напишете идентификатор протокола LDAP в нижнем регистре, вы получите код ошибки 0x80005000 (неизвестная ошибка). Следующий фрагмент кода должен работать:


person logeeks    schedule 13.09.2011    source источник
comment
System.Runtime.InteropServices.COMException не было обработано
Message = "Неизвестная ошибка (0x80005000)"
Source = "System.DirectoryServices" ErrorCode = -2147463168
StackTrace: в System.DirectoryServices.DirectoryEntry.Bind (Boolean выбросить (Отправитель объекта, EventArgs e) в H: \ Raj \ LDAP \ LDAPApp \ LDAPApp \ Form1.cs: строка 37 в System.Windows.Forms.Control.OnClick (EventArgs e) в System.Windows.Forms.Button.OnClick ( EventArgs e) в System.Windows.Forms.Button.OnMouseUp (событие MouseEventArgs) в System.Windows.Forms.Control.WmMouseUp (сообщение & m, кнопка MouseButtons, щелчки Int32) в System.Windows.Forms.Control. WndProc (Message & m) в System.Windows.Forms.ButtonBase.WndProc (Message & m) в System.Windows.Forms.Button.WndProc (Message & m) в System.Windows.Forms.Control.ControlNativeWindow.OnMessage (Message & m) в System.Windows.Forms.Control.ControlNativeWindow.WndProc (сообщение & m) в System.Windows.Forms.NativeWindow.DebuggableCallback (IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) в System.Windows.Forms.UnsafeNativeMetp msg) в System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop (Int32 dwComponentID, Int32 reason, Int32 pvLoopData) в System.Windows.Forms.ApplicationRunMreadConess. ApplicationContext context) в System.Windows.Forms.Application.ThreadContext.RunMessageLoop (причина Int32, контекст ApplicationContext) в System.Windows.Forms.Applicati on.Run (форма mainForm) в LDAPApp.Program.Main () в H: \ Raj \ LDAP \ LDAPApp \ LDAPApp \ Program.cs: строка 18 в System.AppDomain._nExecuteAssembly (сборка сборки, аргументы String []) в системе .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:   -  person Jeremy Cook    schedule 14.08.2013


Ответы (1)


Надеюсь это поможет.

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();

Это не совсем применимо к вашему случаю, но в моем случае я столкнулся с этой ошибкой, когда у меня был конечный / и мне не нужно было включать отличительное имя. Пример: LDAP: //db.debian.org: 389 работает, но LDAP: //db.debian.org: 389 / исключения с кодом ошибки -2147463168.

person Hans    schedule 13.09.2011