クラス ライブラリのメソッドへのパス スルーとして WCF サービスを使用している MVC プロジェクトがあります。サービスにクエリを配置し、プロジェクトからサービスを呼び出したところ、クエリは正常に機能し、結果が返されました。クラス ライブラリを直接指すようにコードを変更したところ、メソッドは正常に実行され、期待どおりの結果が返されました。クラス ライブラリを呼び出して結果を返すだけの Web サービスを呼び出すと、壊れます。コードで発生するエラーは次のとおりです。
「url」への HTTP 応答の受信中にエラーが発生しました。これは、サービス エンドポイント バインディングが HTTP プロトコルを使用していないことが原因である可能性があります。これは、HTTP 要求コンテキストがサーバーによって中止されたことが原因である可能性もあります (サービスのシャットダウンが原因である可能性があります)。詳細については、サーバー ログを参照してください。
これを調査しているときに、これは一般的な「壊れた」エラーであり、トレースを有効にするためであると言う人が何人かいることがわかりました。トレースをオンにすると、エラー メッセージが 1 つだけ表示されます。
コンテンツ タイプ application/soap+xml; charset=utf-8 が text/xml を期待するサービスに送信されました。文字セット=utf-8。クライアントとサービスのバインディングが一致していない可能性があります。
.config ファイルでバインドを定義しません。私はこのセットアップを機能させましたが、オブジェクト指向にするためにクラス ライブラリに変更が加えられました。その変更に起因するすべてのエラーを解決しましたが、このエラーを理解できません。このエラーをグーグルで検索して見つけたいくつかの修正を試みましたが、どれも成功しませんでした。他に何を試すことができるかについて誰か提案がありますか?
編集:
プロジェクトの構成を見ると、Web サービス参照を設定したときにバインドが設定されていました。basichttp バインディングを使用しています。最初のバインディングが定義されており、2 番目のバインディングが自動検出であるため、パーツと個別に対話できると推測しています。私の問題は、2 つの自動検出パーツが互いに通信するときだと考えています。その角度に沿って何かを理解しようとしています。