1

RESTful WCFサービスを作成しました(StackOverflowに感謝します)。テストクライアントを作成しました。これは、5つのテキストボックスと送信ボタンを備えたシンプルな.aspxページです。データをテキストボックスに入力して[送信]ボタンをクリックすると、データがWCFサービスに送信されます。

私のWCFサービスはVisualStudio開発サーバーで実行されており、正常に機能しました。データをWCFサービスに正常に送信できます。今日、このWCFサービスをローカルIISに展開しました。クライアントアプリケーション(.aspxページ)でサービスURLを参照しようとすると、このエラーが発生します。

「メタデータに解決できない参照が含まれています。クライアントとサービスのバインディングが一致していない可能性があります。コンテンツタイプ'application/ soap + xml; charset=utf-8'が予期されたタイプ'text/ xml;ではなかったため、メッセージを処理できません。 「」

問題が何であるかについて何か考えはありますか?これが私のweb.configです

    <?xml version="1.0"?>
    <configuration> 
      <system.web>
        <compilation debug="true" targetFramework="4.0" />
      </system.web>
      <system.serviceModel>   
        <behaviors>
          <serviceBehaviors>
            <behavior>
              <serviceMetadata httpGetEnabled="true" />
              <serviceDebug includeExceptionDetailInFaults="false" />
            </behavior>
          </serviceBehaviors>
        </behaviors>

        <services>
          <service name="RESTService1">
            <endpoint address="http://localhost:420/WCFRESTService100/RESTService1.svc" binding="webHttpBinding" name="MainHttpPoint" contract="RESTService1" />
            <host>
              <baseAddresses>
                <add baseAddress="http://localhost:420/WCFRESTService100/RESTService1.svc" />
              </baseAddresses>
            </host>
          </service>
        </services>

        <!--<serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>-->
      </system.serviceModel>
     <system.webServer>
        <modules runAllManagedModulesForAllRequests="true" />
      </system.webServer>

    </configuration>
4

1 に答える 1

1

問題は、RESTサービスのサービス参照を追加したことだと思います。RESTサービスを記述するための標準的なメタデータ形式がないため、RESTサービスには使用可能なメタデータがありません。

サービス参照を追加できた唯一の理由は、SOAP定義を公開したサービスを残したためです。したがって、クライアント構成を貼り付けると、エンドポイントにSOAPエンドポイント(wsHttpBindingまたはbasicHttpBinding)があると確信しているため、呼び出しを行うときにmimeタイプの不一致に関するエラーが発生します。

WCFを使用してクライアントからRESTサービスを呼び出す場合は、クライアントとサーバー間でコントラクト定義を共有するか、クライアントで完全に複製する必要があります。

于 2011-07-31T23:26:19.093 に答える