Web サービスを ASP.NET Web Api 2 に移行していて、ほぼ最初のハードルで問題にぶつかっています。
私はこれをしたい:
public class SomeController : ApiController
{
[Route("some\url")]
public object Get()
{
return { Message = "Hello" };
}
}
また、サービスに「application/json」または「application/xml」(または実際にはメッセージ パックなどのその他の潜在的な形式) を要求し、シリアル化された応答を取得できます。しかし、JSONでしか機能しないようです。
私はこれを読んで、フレームワークが匿名型の XML へのシリアル化を (真剣に) 処理できず、解決策は XML を (真剣に) 使用しないことであると明確に述べているドキュメントを見ました。
これを呼び出して XML を応答タイプとして要求しようとすると、
The 'ObjectContent`1' type failed to serialize the response body for content type 'application/xml; charset=utf-8'.
XML を要求したいクライアントのサポートを削除するつもりはありませんが、これに対する回避策が本当に見つかりません。どうすればよいですか?
編集
これらを追加しました:
System.Web.Http.GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();
config.Formatters.Insert(0, new System.Net.Http.Formatting.JsonMediaTypeFormatter());
config.Formatters.Insert(0, new System.Net.Http.Formatting.XmlMediaTypeFormatter());
Dalorzoの答えによると、違いはありませんでした.
明確にするために、 の受け入れヘッダーを使用してサービスを呼び出すと、サービスはまったく問題なく動作しますが、 の受け入れヘッダーを使用してapplication/json
呼び出すと爆弾が発生しapplication/xml
ます。