WWSAPI等效于App.config中的C#/。net <servicecertificate>

时间:2016-06-21 12:11:29

标签: c# .net soap soap-client wwsapi

我们正在构建一个C ++ / WWSAPI客户端来连接第三方C#/ .net服务器。我们有一个与服务器一起使用的示例C#/ .net客户端。它有它的App.config(client.exe.config):

<behaviors>
  <endpointBehaviors>
    <behavior name="TheirBehavior">
      <clientCredentials>
        <serviceCertificate>
          <defaultCertificate findValue="crypt.theirdomain.com" storeLocation="LocalMachine" storeName="Root" x509FindType="FindBySubjectName"/>
        </serviceCertificate>
      </clientCredentials>
    </behavior>
  </endpointBehaviors>
</behaviors>
<client>
  <endpoint address="https://zzz.theirdomain.com/TheirService.svc"
    binding="customBinding" bindingConfiguration="TheirServiceBinding" behaviorConfiguration="TheirBehavior"
    contract="ProdWS.ITheirService" name="TheirServiceBinding">
    <identity>
      <dns value="crypt.theirdomain.com"/>
    </identity>
  </endpoint>
</client>

我们还有一个证书,我们正在正确加载(否则我们会在通话前得到There was an error when trying to find certificate '...'; Cannot find object or property.。)

我们如何在WWSAPI中启用此功能?是否有任何引用将显示所有.net配置设置与相应的WWSAPI配置之间的映射?

以下配置(在WS_SECURITY_BINDING中设置)提供Invalid certificate credential specification in security binding.

WS_SSL_TRANSPORT_SECURITY_BINDING sslBind{};
sslBind.binding.bindingType = WS_SSL_TRANSPORT_SECURITY_BINDING_TYPE;
sslBind.localCertCredential = &certCred.credential;

这是在正确的轨道上吗?

1 个答案:

答案 0 :(得分:0)

我们放弃了这种方法。但是为了实现这一目标,我们开始使用Visual Studio 2015的免费版本并将我们的代码和库移植到MSVC。

为了使它工作,我们创建了一个C#.dll项目并将它们的.wsdl / .xsd文件添加为“服务引用”,然后将该项目添加为我们的C ++项目的引用。充满困难,包括不得不手动将.NET v4.5入侵.vcxproj,并且必须启用/ clr并因此而对lib执行一个神秘的补丁。但是让它发挥作用。

我们供应商对“互操作性”的主张是胡扯。只有C#,Visual Studio 2015,就像他们正在使用的那样,然后将它连接到你自己的。

此外,Library.dll.config文件需要重命名为可执行文件的Executable.exe.config,否则.NET将无法找到它。