XmlSerializer忽略WebApi中的

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

  foobar  

而我希望它会像这样返回:

   

为什么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);