Невозможно включить SecureSocketLayer с помощью DirectoryServices.Protocols.LdapConnection

Я пытаюсь исправить ошибку с 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 );
  }

Тест не проходит. Есть ли здесь что-то, чего мне не хватает?


person Jared    schedule 10.11.2008    source источник


Ответы (1)


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

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

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

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

person Jared    schedule 16.11.2008