c# - XmlSerializer 忽略 Web Api 中的 [Xml 属性]

标签 c# asp.net-web-api xmlserializer

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

相关文章:

C# 文件上次修改时间

c# - 无法使用 autofac 解决通用存储库的依赖关系

asp.net - 来自 KnockoutJs ViewModel 的 Web Api 帖子

c# - Web api post方法上的空参数

c# - 需要 ClassInterfaceType.None 吗?

c# - 如何将图像右对齐,底部在图片框中

c# - MVC 5 身份验证和 HttpClient 没有可用的 MediaTypeFormatter

C#将不同类型的xml数组反序列化为多个数组

c# - 强制 XmlDefaultValue 值的 XML 序列化

.net - 性能 : XmlSerializer vs XmlReader vs XmlDocument vs XDocument