WWSAPI эквивалент C# / .net в приложении.конфиг
Мы создаем клиент C++ / WWSAPI для подключения к стороннему серверу C#/.net. У нас есть пример клиента C#/.net, который работает с сервером. Это есть в его приложении.конфигурации (клиент.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 ответ:
Мы отказались от этого подхода. Но даже для этого мы начали использовать бесплатную версию Visual Studio 2015 и перенесли наш код и библиотеки в MSVC.
Чтобы заставить его работать, мы создали C# .dll проект и добавил свои .язык WSDL/.xsd-файлы в качестве "ссылки на службу", а затем добавил этот проект в качестве ссылки на наш C++. Таит в себе сложности, в том числе и необходимость взломать .NET v4.5 .vcxproj вручную, и необходимость включить /clr и сделать таинственный патч для lib из-за этого. Но это сработало.
Заявление нашего поставщика о "совместимости" было полной чушью. Только C#, Visual Studio 2015, точно так же, как они используют, а затем соедините это с вашим собственным.
Также библиотека.файл DLL.конфигурационный файл должен быть переименован в исполняемый файл исполняемого файла.exe.config, или .NET не найдет его.