WWSAPI 相当于 App.config 中的 C#/.net <serviceCertificate>
WWSAPI equivalent of C#/.net <serviceCertificate> in App.config
我们正在构建一个 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;
这是在正确的轨道上吗?
我们放弃了这种方法。但为了做到这一点,我们开始使用 Visual Studio 2015 的免费版本,并将我们的代码和库移植到 MSVC。
为了让它工作,我们创建了一个 C# .dll 项目并将他们的 .wsdl/.xsd 文件添加为 "Service Reference",然后将该项目添加为对我们的 C++ 项目的引用。困难重重,包括必须手动将 .NET v4.5 破解到 .vcxproj 中,并且必须启用 /clr 并因此对 lib 做一个神秘的补丁。但是成功了。
我们供应商的 "interoperability" 声明纯属胡扯。只有 C#,Visual Studio 2015,就像他们使用的一样,然后将其桥接到您自己的。
此外,Library.dll.config 文件需要重命名为可执行文件的 Executable.exe.config,否则 .NET 将找不到它。
我们正在构建一个 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;
这是在正确的轨道上吗?
我们放弃了这种方法。但为了做到这一点,我们开始使用 Visual Studio 2015 的免费版本,并将我们的代码和库移植到 MSVC。
为了让它工作,我们创建了一个 C# .dll 项目并将他们的 .wsdl/.xsd 文件添加为 "Service Reference",然后将该项目添加为对我们的 C++ 项目的引用。困难重重,包括必须手动将 .NET v4.5 破解到 .vcxproj 中,并且必须启用 /clr 并因此对 lib 做一个神秘的补丁。但是成功了。
我们供应商的 "interoperability" 声明纯属胡扯。只有 C#,Visual Studio 2015,就像他们使用的一样,然后将其桥接到您自己的。
此外,Library.dll.config 文件需要重命名为可执行文件的 Executable.exe.config,否则 .NET 将找不到它。