2016-06-21 5 views
2

サードパーティのC#/ .netサーバーに接続するためのC++/WWSAPIクライアントを構築しています。サーバーで動作するサンプルのC#/ .netクライアントがあります。我々はまた、我々が正常にロードしている証明書を持ってApp.configのC#/ .net <serviceCertificate>に相当するWWSAPI

<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.を得る。)

方法:それはそれで、これはApp.configファイル(client.exe.configが)だました私たちは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

私たちはこのアプローチを断念しました。しかしこれまでのところでさえ、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に変更する必要があります。