質問

WCFサービス(WCFService1など)が2つのリモートマシンに展開されています。同じサービスが2つの異なるマシンにデプロイされているため、共通のインターフェースと共通のメソッドが公開されています。

WCFService1はMachine1およびMachine2に展開されています

クライアントマシンからWCFサービスを利用するために、クライアントアプリを作成しました:

  1. URL http://11.12.25.23/WCFService/Service1.svc )。

  2. これで、サービスで公開されているメソッドを呼び出すことができます。今までは大丈夫...

今私の質問は、異なる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に変更する場合(それが本当に必要な場合)、このエラーを削除します。

サービスはどのように構成されていますか?サーバー側とクライアント側の設定を見せてください!

バインディングの不一致は、同じバインディングを使用していないか、バインディングのいくつかの重要なパラメーターが異なることを意味します-何か間違って構成されている必要があるため、構成を表示してください!

マーク

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top