使用ASP.NET Web API使用XML数据进行POST时,我无法使模型绑定工作。 JSON数据工作正常。
使用全新的Web API项目,这是我的模型类:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class PostResponse
{
public string ResponseText { get; set; }
}
这是我在控制器中的post方法:
public PostResponse Post([FromBody]Person aPerson)
{
var responseObj = new PostResponse();
if (aPerson == null)
{
responseObj.ResponseText = "aPerson is null";
return responseObj;
}
if (aPerson.FirstName == null)
{
responseObj.ResponseText = "First Name is null";
return responseObj;
}
responseObj.ResponseText = string.Format("The first name is {0}", aPerson.FirstName);
return responseObj;
}
我可以使用Fiddler的JSON成功运行它:
请求标题:
用户代理:Fiddler
主持人:localhost:49188
Content-Type:application / json;字符集= UTF-8
内容长度:38请求正文:
{ “姓”: “汤姆”, “名字”: “琼斯”}结果:
{“ResponseText”:“名字是汤姆”}
传入XML时,Person对象没有正确补充水分:
请求标题:
用户代理:Fiddler
主持人:localhost:49188
内容类型:text / xml
内容长度:79请求正文:
<人>
<姓>汤姆与LT; /姓>
<名字> Jones和LT; /名字>
< /人>结果:
< ResponseText> aPerson为null< / ResponseText>
据我所知,XML应该与JSON类似。关于我在这里缺少什么的任何建议?
谢谢,
跳过
答案 0 :(得分:25)
在WebApiConfig.cs
:
config.Formatters.XmlFormatter.UseXmlSerializer = true;
这迫使Web API使用XMLSerializer而不是DataContractSerializer,并允许您传递原始XML。
否则你必须通过完全合格的数据收集XML,即:
<Person xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Test.WebAPI.Controllers">
<FirstName>a</FirstName>
<LastName>b</LastName>
</Person>