我有一个返回简单对象的 WebApi,但是当我强制它以 XML (Accept: application/xml
) 形式返回时,它会忽略 [XmlAttribute]
我在对象上设置的属性。
这是我的对象:
public class Foo
{
[XmlAttribute]
public string Bar { get; set; }
}
然后我在代码中像这样返回它:
[RoutePrefix("api/mytest")]
public class MyTestController : System.Web.Http.ApiController
{
[HttpGet]
[Route("gettest")]
public Foo GetTest()
{
return new Foo() { Bar = "foobar" };
}
}
生成的 XML 是:
<Foo>
<Bar>foobar</Bar>
</Foo>
而我希望它像这样返回:
<Foo Bar="foobar">
</Foo>
为什么 WebApi 使用的 XmlSerializer 会忽略 [XmlAttribute]
属性,我怎样才能让它像我想要的那样工作?
最佳答案
尝试在您的 WebApi 中将此全局配置值设置为 true
GlobalConfiguration.Configuration.Formatters.XmlFormatter.UseXmlSerializer = true;
默认情况下,Web API 在 XmlMediaTypeFormatter 中使用 DataContractSerializer。
关于c# - XmlSerializer 忽略 Web Api 中的 [Xml 属性],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35846873/