デフォルトのコンテンツ タイプとして JSON を使用して AppHost を構成しました。残念ながら、ServiceStack がリクエストを対応する DTO にデシリアライズできなかった場合、アプリケーション/xml コンテンツで応答します。応答の例を次に示します (簡潔にするために、ほとんどのメッセージとスタックトレース要素の値を省略しました)。
<UpsertResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="">
<ResponseStatus>
<ErrorCode>SerializationException</ErrorCode>
<Message>Could not deserialize 'application/xml' request using ...</Message>
<StackTrace>at ServiceStack.WebHost.Endpoints.Support.EndpointHandlerBase.CreateContentTypeRequest(IHttpRequest httpReq, Type requestType, String contentType)...</StackTrace>
</ResponseStatus>
</UpsertResponse>
リクエストが「application/xml」コンテンツを送信していたため、レスポンスはそのようにエンコードされていると思います。ServiceStack に既定のコンテンツ タイプを使用させる (またはフックする) 方法はありますか?
もう少し関連性 - 私のサービスは JSON をデフォルトのコンテンツ タイプとして使用するだけでなく、JSON がグローバル リクエスト フィルタを介して唯一の受け入れられるコンテンツ タイプであることを保証します。これは、各読み取り中に Accept/Content-type ヘッダーをチェックします。 /write は、コンテンツ タイプが「application/json」でない場合に 400 レスポンスでリクエストをショートサーキットします。