我们正在构建一个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;
这是在正确的轨道上吗?
答案 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将无法找到它。