サードパーティがうまく利用できるサービスを作成しようとしています。
コンシューマはSOAP 1.1と互換性があるため、サーバーにbasicHttpBindingを使用しています。実際のリクエストが行われると、予期されるコンテンツタイプで問題が発生するようですbasicHttpBindingを使用すると、なぜサーバーが「application/soap + xml」を期待しているのかわかりません。私の知る限り、これはSOAP 1.2。
私はwiresharkを使用して、これら2つが何について通信しているかを正確に把握しました。以下のtcpストリームと設定を参照してください。
どんな助けでもありがたいです。
サードパーティアプリのリクエスト
POST/HTTP/1.1
SOAPAction: http://tempuri.org/ITestService/Hello
Content-Type:text/xml; charset = utf-8
ホスト:shdesktop:8000
コンテンツの長さ:297
予想:100継続
接続:閉じる
WCFサーバー応答
HTTP/1.1 415コンテンツタイプ 'text/xml;のため、メッセージを処理できません。 charset = utf-8 'は予期されたタイプ' application/soap + xml;ではありませんでした。 charset = utf-8 '。
コンテンツの長さ:0
サーバー:Microsoft-HTTPAPI/2.0
日付:2010年2月9日火曜日14:03:19 GMT
接続:閉じる
サービス構成
<system.serviceModel>
<services>
<service behaviorConfiguration="behTestService" name="ConsoleApplication1.TestService">
<endpoint address="" binding="mexHttpBinding" contract="IMetadataExchange" />
<endpoint address="TestService" binding="basicHttpBinding"
contract="ConsoleApplication1.ITestService" />
<Host>
<baseAddresses>
<add baseAddress="http://localhost:8000" />
</baseAddresses>
</Host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="behTestService">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
basicHttpBinding
はSOAP 1.1を使用しますが、その場合、コンテンツタイプはapplication/soap+xml
になります。
クライアントがtext/xml
を送信しているため、RESTインターフェースを期待している可能性はありますか?これは、WCF webHttpBinding
によって処理されます。
MSDN WCF RESTデベロッパーセンター でWCFのRESTの詳細を読み、Pluralsight スクリーンキャストを確認してくださいWCF REST のシリーズ-強くお勧めします!
一般に、次のテキストを含むWebサービスでメッセージ/エラーが発生した場合:
content type 'text/xml'
これは、Webサーバーが予期したxml応答の代わりにエラーページを返したことを意味します。
私はまったく同じ問題を抱えていました-定義はそれが石鹸1.2であると述べていましたが、コンテンツタイプが異なっていたので1.1を期待していました。
サーバー構成を次のように調整した場合:
...
<endpoint address="" .../>
<Host>
<baseAddresses>
<add baseAddress="http://localhost:8001/services/fooService" />
</baseAddresses>
</Host>
...
に:
...
<endpoint address="fooService" .../>
<Host>
<baseAddresses>
<add baseAddress="http://localhost:8001/services" />
</baseAddresses>
</Host>
...
今回、wsdlはそれをSoap 1.1として公開しました。