通过web API调用请求XML文档为XML时出错

本文关键字:XML 文档 出错 请求 web API 调用 通过 | 更新日期: 2023-09-27 18:04:15

我有一个xml文档,我想通过web api调用返回。

我希望允许用户通过内容协商来选择响应。

 [HttpGet]
 public HttpResponseMessage Get()
 {
      var doc = new XmlDocument();
      doc.LoadXml("<MyExport SomeProperty='Some Value'></MyExport>");
      return Request.CreateResponse(HttpStatusCode.OK, doc);
  }

当我请求这是一个接受头的应用程序/xml我得到错误:

<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>

我做错了什么?我认为这应该通过内容协商来处理?

通过web API调用请求XML文档为XML时出错

这里的问题是您返回的是XML(或者更准确地说,是XmlDocument对象)——因此抢占了任何合理的内容协商。如果客户端请求JSON,但服务器返回XML,就会出现问题。

Web API的思想是,您返回POCO对象,框架将它们自动序列化为所请求的格式。