c# – XmlSerializer忽略WebApi中的[XmlAttribute]

我有一个返回一个简单对象的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.

上一篇:Java自学习day8-类中方法的声明和使用


下一篇:day8.java