14

NSIS を使用してインストーラーを作成しています。そのインストーラーの一部として、WCF サービスの詳細 (つまり、URL、ユーザー名、およびパスワード) を取得します。これらの詳細を検証する必要があります。

C# でサービス参照を作成し、次の操作を行うだけです。

var proxy = new ServiceClient(httpsBinding, serviceEndpointAddress);
proxy.ClientCredentials.UserName.UserName = userName;
proxy.ClientCredentials.UserName.Password = password;

try
{
    proxy.Open();
}
catch (EndpointNotFoundException ex)
{
    // Return the end point's not valid
}
etc

これを C++ で実行して、NSIS から呼び出すことができるようにする必要があります (NSIS から C# を呼び出す方法を調査しましたが、それらはすべてやりたいことに対してやり過ぎのようです)。バインディングとエンド ポイント アドレスを生成するコードを変換することはできましたが、ServiceClient.

ServiceClientプロジェクトに「Web 参照」を追加しましたが、ServiceReference名前空間に相当するものはありません。これ:

ServiceReference::ServiceClient ^service = gcnew ServiceReference::ServiceClient(httpsBinding, endpointAddress);

次のようにコンパイルされません:

'ServiceClient': 'ServiceReference' のメンバーではありません

では、クライアントを作成するにはどうすればよいでしょうか。

4

3 に答える 3

0

C# DLL を作成し、regasm を使用してこの DLL を登録すると、C++ プログラムから使用できるようになります。

于 2013-07-31T11:27:51.050 に答える
0

gSOAPを試しましたか?

http://gsoap2.sourceforge.net/

これは、C++ プログラムから WS* にアクセスするために使用しているものです。

于 2013-07-25T20:02:08.597 に答える
0

最終的には、NSIS の「.NET DLL メソッド プラグインを呼び出す」を使用しましたが、これは私が必要としていたことに対して非常にやり過ぎでしたが、機能するソリューションが必要であり、時間切れになりました。

于 2013-09-02T10:42:04.440 に答える