我有一个xml文档,我想通过web api调用返回。
我想通过内容协商允许用户选择响应。
[HttpGet]
public HttpResponseMessage Get()
{
var doc = new XmlDocument();
doc.LoadXml("<MyExport SomeProperty='Some Value'></MyExport>");
return Request.CreateResponse(HttpStatusCode.OK, doc);
}
当我请求这个application / xml的Accept标头时,我收到错误:
<Error>
<Message>An error has occurred.</Message>
<ExceptionMessage>The 'ObjectContent`1' type failed to serialize the response body for content type 'application/xml; charset=utf-8'.</ExceptionMessage>
<ExceptionType>System.InvalidOperationException</ExceptionType>
我做错了什么我认为这应该通过内容协商处理?
答案 0 :(得分:0)
这里的问题是你正在返回XML(或者更确切地说,是一个XmlDocument对象)---所以要抢占任何合理的内容协商。如果客户端要求JSON,但服务器返回XML,则会出现问题。
使用Web API的想法是返回POCO对象,框架将它们自动序列化为请求的格式。