web-dev-qa-db-ja.com

コンテンツタイプtext / html。応答メッセージのcharset = UTF-8がバインディングのコンテンツタイプと一致しません(text / xml; charset = utf-8)

スタンドアロンアプリケーションを使用して、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)."

何が間違っているのかアドバイスしてください。

ありがとうございました。

13
nav100

返されるコンテンツタイプは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クライアントによって処理されません。

17
Sam B

これは役立つ場合があります。ISS 7。

2
user2493343

次のコードを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" />

役に立つことを願っています

0
vajihe

アプリケーションはXMLを想定しているようですが、プレーンテキストを受け取っているようです。どのタイプのオブジェクトを渡しますか?

0
smartcaveman

text/html is SOAP 1.1ヘッダーおよびContent-Type:application/soap + xml is SOAP 1.2バインディングを確認してヘッダーを返します。 1.1または1.2

0
Taran