URLを介してWCFサービスにアクセスする
-
05-07-2019 - |
質問
WCFサービス(WCFService1など)が2つのリモートマシンに展開されています。同じサービスが2つの異なるマシンにデプロイされているため、共通のインターフェースと共通のメソッドが公開されています。
WCFService1はMachine1およびMachine2に展開されています
クライアントマシンからWCFサービスを利用するために、クライアントアプリを作成しました:
-
これで、サービスで公開されているメソッドを呼び出すことができます。今までは大丈夫...
今私の質問は、異なるURLの異なるマシンでホストされている同じサービスで実行時にクライアントを更新する必要がある場合です(たとえば http://12.12.24.24/WCFService/Service1.svc )、どうすればいいですか?
現在、私はこれをしています:
BasicHttpBinding binding = new BasicHttpBinding();
EndpointAddress address = new EndpointAddress("http://12.12.24.24/WCFService/Service1.svc");
MyServiceClient serviceClient = new MyServiceClient(binding, address);
しかし、サービスで公開されているメソッドを呼び出すために使用すると、バインディングミスマッチエラーが発生しました。
解決
最初にクライアントを呼び出してみましたか?
eg:
MyWCFClient client = new MyWCFClient();
client.EndPoint.Address = new EndpointAddress("http://somewhere:888/here.svc");
他のヒント
Machine1のweb.configファイルを見ると、そこにあるバインディングがWSHttpBinding(またはBasicHttpBindingとは異なるもの)であることがわかります。これをBasicHttpBindingに変更する場合(それが本当に必要な場合)、このエラーを削除します。
サービスはどのように構成されていますか?サーバー側とクライアント側の設定を見せてください!
バインディングの不一致は、同じバインディングを使用していないか、バインディングのいくつかの重要なパラメーターが異なることを意味します-何か間違って構成されている必要があるため、構成を表示してください!
マーク