プログラムでWCFクライアントを作成する
-
22-07-2019 - |
質問
Silverlight対応のWCFサービスを備えたWebサイトがあります。サービスは正常に機能し、問題なくブラウザでWSDLページを参照できます。
今、DLLでクライアントを作成しようとしています。ただし、DLLで呼び出されているクライアント全体をプログラムで作成する必要があります。これは、何らかの理由で(設計上)独自の構成ファイルからServiceModelセクションを読み取らないためです。
ここに私のコードがあります:
Dim endp As EndpointAddress = New EndpointAddress("http://www.mydomain.com/licensing/lic.svc")
Dim bind As WSHttpBinding = New WSHttpBinding()
Dim svc = New lnt.licClient(bind, endp)
Dim rsp = svc.CheckIt(key)
しかし、svc.CheckItメソッドを呼び出すと、次のエラーが表示されます。
Content Type application/soap+xml; charset=utf-8 was not supported by service http://www.mydomain.com/licensing/lic.svc.
The client and service bindings may be mismatched.
{"The remote server returned an error: (415) Cannot process the message because the content type 'application/soap+xml; charset=utf-8' was not the expected type 'application/soap+msbin1'.."}
クライアントが適切に「一致」するように適切に作成するにはどうすればよいですか?
よろしくお願いします!!!
解決
ああ---それを見つけた。 Webサイトの web.config
の ServiceModel セクションが customBinding に設定されました。クライアントが送信しているものと一致するように変更し、今では美しく動作します。
他のヒント
この同じ問題に遭遇しました。より具体的には、私の修正は、使用していたバインディングのタイプを更新することでした。 basicHttpBindings
の代わりに wsHttpBindings
を使用していました。 wsHttpBindings
はSOAP 1.2を使用し、 basicHttpBindings
はSOAP 1.1を使用し、必要なSOAP 1.1
同じエラーが発生しました。サービスはコンパイルされていましたが、クライアントも同様です。クライアントアプリケーションのサービス参照は、参照を正常に更新していました。もう一度参照を削除して追加しようとしましたが、役に立ちませんでした。問題は、Webサービスの削除されたインターフェースにありました。