6

我正在尝试修复产品中的 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 );
  }

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

4

1 回答 1

8

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

低级 API 仅在方法执行时更新。您可以将其视为为尚未启动的可执行文件构建命令行参数。

当进行像 Bind() 这样的调用时,将启动可执行文件并且属性将报告正确的值。

因此,仅仅因为该属性说该值为 false,它在必要时使用了 true。

于 2008-11-16T09:14:39.687 回答