无法使用DirectoryServices.Protocols.LdapConnection打开SecureSocketLayer

时间:2008-11-10 14:40:48

标签: ssl ldap directoryservices 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 );
  }

测试失败。这里有什么我想念的吗?

1 个答案:

答案 0 :(得分:6)

事实证明,DirectoryServices.Protocols实现LDAP调用的方式是将它们传递给低级LDAP API。这个LDAP API是在属性上完成get时查询的内容。

只有在执行方法时才会更新低级API。你可以考虑这个,就像它为尚未启动的可执行文件构建命令行参数一样。

当进行类似Bind()的调用时,将启动可执行文件,属性将报告正确的值。

因此,仅仅因为该属性说该值为false,所以必要时使用true。