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 2

1 ответ:

Мы отказались от этого подхода. Но даже для этого мы начали использовать бесплатную версию Visual Studio 2015 и перенесли наш код и библиотеки в MSVC.

Чтобы заставить его работать, мы создали C# .dll проект и добавил свои .язык WSDL/.xsd-файлы в качестве "ссылки на службу", а затем добавил этот проект в качестве ссылки на наш C++. Таит в себе сложности, в том числе и необходимость взломать .NET v4.5 .vcxproj вручную, и необходимость включить /clr и сделать таинственный патч для lib из-за этого. Но это сработало.

Заявление нашего поставщика о "совместимости" было полной чушью. Только C#, Visual Studio 2015, точно так же, как они используют, а затем соедините это с вашим собственным.

Также библиотека.файл DLL.конфигурационный файл должен быть переименован в исполняемый файл исполняемого файла.exe.config, или .NET не найдет его.