スタンドアロンアプリケーションを使用して、WCFサービスを作成し、WCFクライアントをテストしました。 Internet Explorerを使用してこのサービスを表示することができ、Visual Studioのサービス参照を表示することもできました。エラーメッセージは次のとおりです。
"The content type text/html; charset=UTF-8 of the response message does not match the content type of the binding (text/xml; charset=utf-8)."
何が間違っているのかアドバイスしてください。
ありがとうございました。
返されるコンテンツタイプはtext/html
、WCFの外部でサーバー側エラーが発生した疑いがあります(HTMLエラーページが表示されます)。
Fiddler などのWebデバッグプロキシで応答を表示してみてください。
(コメントに基づいて編集):
あなたのコメントに基づいて、WCFはSharepoint 2010の下のフォーム認証サイトでホストされていると思います。
受信しているエラーは、WCFクライアントがsharepointで認証されていないという事実によるものです。有効な認証Cookieがありません。 Sharepointは、HTTPリダイレクトをHTMLページ(login.aspxページ)に返します。 WCFクライアントでは予期されていません。
さらに進むには、Sharepointから認証Cookieを取得し( Authentication Web Service を参照)、WCFクライアントに渡す必要があります。
(更新された編集):
間違い:サイトはクレームベースの認証を使用しています。
これは必ずしもCookieやフォーム認証によるものではありませんが、提供されたエラーメッセージの説明は同じままです。認証の問題により、HTMLページへのリダイレクトが発生しますが、これはWCFクライアントによって処理されません。
これは役立つ場合があります。ISS 7。
次のコードをweb.configサーバープロジェクトに追加します
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="basicHttpBinding_IService">
<security mode="Transport">
<transport clientCredentialType="None" proxyCredentialType="None"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="Service">
<endpoint address="" name="BasicHttpBinding_IService"
binding="basicHttpBinding"
bindingConfiguration="basicHttpBinding_IService"
contract="IService" />
</service>
その後、クライアントWebサービスを更新します。更新後、次の変更がweb.configで行われます。
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IService">
<security mode="Transport" />
</binding>
</basicHttpBinding>
</bindings>
<endpoint address="https://www.mywebsite.com/Service.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService"
contract="Service.IService" name="BasicHttpBinding_IService" />
役に立つことを願っています
アプリケーションはXMLを想定しているようですが、プレーンテキストを受け取っているようです。どのタイプのオブジェクトを渡しますか?
text/html is SOAP 1.1ヘッダーおよびContent-Type:application/soap + xml is SOAP 1.2バインディングを確認してヘッダーを返します。 1.1または1.2