Невозможно включить SecureSocketLayer с DirectoryServices.Protocols.LdapConnection - PullRequest
4 голосов
/ 10 ноября 2008

Я пытаюсь исправить ошибку с SSL в продукте и заметил, что хотя код устанавливает SSL в значение true, в следующей строке в коде SSL по-прежнему имеет значение false. Я написал для этого юнит-тест, и юнит-тест подтверждает мои подозрения.

  [TestMethod]
  public void SecureSocketLayerSetToTrue( )
  {
     var ldapConnection = new LdapConnection( 
                                new LdapDirectoryIdentifier( "ldap.test.com", 636 ));
     ldapConnection.SessionOptions.SecureSocketLayer = true;
     Assert.IsTrue( ldapConnection.SessionOptions.SecureSocketLayer );
  }

Тест не пройден. Здесь есть что-то, чего мне не хватает?

1 Ответ

6 голосов
/ 16 ноября 2008

Оказывается, способ, которым DirectoryServices.Protocols реализует свои вызовы LDAP, - это передача их низкоуровневому API-интерфейсу LDAP. Этот LDAP API - это то, что запрашивается, когда для свойства выполняется получение.

Низкоуровневый API обновляется только при выполнении методов. Вы можете думать об этом, как будто он создает аргументы командной строки для исполняемого файла, который еще не запущен.

Когда выполняется вызов типа Bind (), запускается исполняемый файл, и свойства сообщают правильное значение.

Итак, поскольку свойство говорило, что значение ложно, оно использовало true, когда это необходимо.

...