C# XmlSerializer忽略WebApi中的[XmlAttribute]

C# XmlSerializer忽略WebApi中的[XmlAttribute],c#,asp.net-web-api,xmlserializer,C#,Asp.net Web Api,Xmlserializer,我有一个WebApi,它返回一个简单的对象,但是当我强制它以XML形式返回时(Accept:application/XML),它会忽略我在对象上设置的[xmldattribute]属性 这是我的目标: public class Foo { [XmlAttribute] public string Bar { get; set; } } 我在代码中这样返回它: [RoutePrefix("api/mytest")] public class MyTestController :

我有一个WebApi,它返回一个简单的对象,但是当我强制它以XML形式返回时(
Accept:application/XML
),它会忽略我在对象上设置的
[xmldattribute]
属性

这是我的目标:

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。

这对我来说很有效。。。无需更改全局配置

var configuration = new HttpConfiguration();
configuration.Formatters.XmlFormatter.UseXmlSerializer = true;
return Request.CreateResponse(HttpStatusCode.OK, myObjectToSerialize, configuration);

“简单对象”的类型是什么?我觉得你的Foo Bar不是你真正的代码。你是对的,Foo Bar不是我真正的代码,但我确实用我在问题中描述的东西重新创建了这个问题,所以我真正的代码并不重要,因为Foo Bar也失败了。我有一个
HttpConfiguration
configuration对象,我做了一个
config.Formatters.XmlFormatter.UseXmlSerializer=true。不幸的是,这没有任何效果。