2017-04-19 8 views
1

JSONを受信、処理、返すWCFをビルドしようとしています。しかし、私がしたい、HTTP要求のコンテンツタイプがアプリケーション/ JSONに設定されていない場合でも動作するようですWCFは、Content-TypeがPostmanのapplication/jsonに設定されていないとHTTP 400を返します。

私の契約は、以下のようになります[それは要求システムが要求して送信する方法である]:

[OperationContract] 
     [WebInvoke(Method = "POST", UriTemplate = "/MethodName", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)] 

私はこのwcfサービスを郵便配達員でテストします。私はapplication/jsonとしてHTTPコンテンツタイプを送信すると、それは完全に正常に動作します。しかし何らかの理由で私のwcfを呼び出すシステムはそれを明示的に送信しません。だから私が郵便受けのクライアントでコンテンツタイプを無効にすると、私はHTTP 400を取得します。

私はIIS7でこれをホストしています。私はそこに何かを指定する必要がありますか?

WCFがcontent-type:application/jsonに明示的に設定されていない要求を受け入れるようにするにはどうすればよいですか。

+0

私はまた 'WebMessageBodyStyle.Bare'に変更しようとしましたが、助けにはなりませんでした。 –

答えて

0

同じ問題がありました。 HTTP 1.1 specification:、Content-Type必須ではありません。

エンティティボディSHOULDを含むHTTP/1.1メッセージには、そのボディのメディアタイプを定義する Content-Typeヘッダーフィールドが含まれている必要があります。と メディアタイプがContent-Typeフィールドで指定されていない場合に限り、 受信者はそのコンテンツを確認するために、 コンテンツおよび/またはその拡張子を識別するために使用されるURIの名前拡張子を調べてメディアタイプを推測することができます。 リソース。メディアタイプが不明の場合、受信者はそれを "application/octet-stream"タイプとして扱うべきである(SHOULD )。

しかし、その外観はwcf RequestFormat = WebMessageFormat.Jsonのようになりません。ヘッダーにcontent-typeを指定する必要がありました。ここであなたはそれについてもっと読むことができます:Can I call a WCF service without setting content-type?

関連する問題