在使用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; }
}
Run Code Online (Sandbox Code Playgroud)
这是我在控制器中的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;
}
Run Code Online (Sandbox Code Playgroud)
我可以使用Fiddler的JSON成功运行它:
请求标题:
用户代理:Fiddler
主机:localhost:49188
内容类型:application/json; charset = utf-8
内容长度:38请求正文:
{"FirstName":"Tom","LastName":"Jones"}结果:
{"ResponseText":"名字是汤姆"}
传递XML时,Person对象没有正确补充水分:
请求标题:
User-Agent:Fiddler
主机:localhost:49188
内容类型:text/xml
内容长度:79请求正文:
<Person>
<FirstName> Tom </ FirstName>
<LastName> Jones </ LastName>
</ Person>结果:
<ResponseText> aPerson为空</ ResponseText>
根据我的理解,XML应该与JSON类似.关于我在这里缺少什么的任何建议?
谢谢,
跳过
Fil*_*p W 25
将此添加到您的WebApiConfig.cs:
config.Formatters.XmlFormatter.UseXmlSerializer = true;
Run Code Online (Sandbox Code Playgroud)
这迫使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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6333 次 |
| 最近记录: |