在 webapi 控制器中接受 application/xml 内容

Accepting application/xml content in webapi controller

我想创建一个将接受 application/xml 内容的操作。

到目前为止,基本上我已经创建了这个。

namespace App.Areas.Test.Controllers
{

    public class UserModel
    {
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public int Age { get; set; }
    }


    public class TestController : ApiController
    {
        [HttpPost]
        public UserModel Test([FromBody] UserModel um)
        {
            return um;
        }
    }
}

当我post以下内容

    <?xml version="1.0" encoding="UTF-8" ?>
    <UserModel>
    <FirstName>Some Name</FirstName>
    <LastName>Some Last Name</LastName>
    <Age>30</Age>
    </UserModel>

我得到了这个回复

<UserModel i:nil="true" />

我尝试删除 FromBody 属性,但这也无济于事。由于某些原因,内容未绑定到现有模型。

您是否添加了 Content-Type : application\xml header?您需要通知序列化器 body 的格式。

这样就可以了...

var xml = GlobalConfiguration.Configuration.Formatters.XmlFormatter;
xml.UseXmlSerializer = true;