2016-06-21 5 views
2

Wir erstellen einen C++/WWSAPI-Client für die Verbindung mit einem C#/.net-Server eines Drittanbieters. Wir haben einen BeispielC#/.net-Client, der mit dem Server arbeitet. Es hat dies in seiner App.config (Client.exe.config):WWSAPI entspricht C#/.net <Dienstzertifikat> in App.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> 

Wir haben auch ein Zertifikat, das wir richtig sind geladen (sonst wir There was an error when trying to find certificate '...'; Cannot find object or property. vor dem Anruf erhalten.)

Wie aktivieren wir das in WWSAPI? Gibt es einen Verweis, der Zuordnungen zwischen allen .net-Konfigurationseinstellungen und der entsprechenden WWSAPI-Konfiguration anzeigt?

Die folgende Konfiguration (Set in WS_SECURITY_BINDING) gibt 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; 

dies ist auf dem richtigen Weg?

Antwort

0

Wir haben diesen Ansatz aufgegeben. Aber um so weit zu kommen, haben wir begonnen, die kostenlose Version von Visual Studio 2015 zu verwenden und unseren Code und unsere Bibliotheken nach MSVC zu portieren.

Um es funktionieren zu lassen, erstellten wir ein C# -DLL-Projekt und fügten ihre .wsdl/.xsd-Dateien als "Service-Referenz" hinzu und fügten dieses Projekt als Referenz zu unserem C++ - Projekt hinzu. Schwierig, einschließlich .NET .NET v4.5 manuell in die .vcxproj hacken zu müssen, und/clr zu aktivieren und einen mysteriösen Patch für eine lib auszuführen. Aber es funktioniert.

Der Anspruch unseres Anbieters der "Interoperabilität" war Quatsch. Nur C#, Visual Studio 2015, genau wie sie es verwenden, dann überbrücken Sie das zu Ihrem eigenen.

Außerdem muss die Datei Library.dll.config in Executable.exe.config der ausführbaren Datei umbenannt werden, oder .NET findet sie nicht.