在使用XML數據和ASP.NET Web API進行POST時,我無法獲得模型綁定的工作。 JSON數據正常工作。ASP.NET Web API - 模型綁定在POST上不支持XML數據
使用全新的Web API項目,這裏是我的模型類:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class PostResponse
{
public string ResponseText { get; set; }
}
這是帖子的方法控制器:
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;
}
我能夠用JSON成功運行從提琴手:
請求報頭:
User-Agent:Fiddler
Host:localhost:49188
Content-Type:application/json;字符集= UTF-8
的Content-Length:38請求體:
{ 「姓」: 「湯姆」, 「名字」: 「瓊斯」}結果:
{ 「的responseText」: 「第一個名字是湯姆」}
當傳遞XML,Person對象是不正確水合:
個請求報頭:
的User-Agent:提琴手
主機:本地主機:49188
內容類型:文本/ XML
的Content-Length:79請求正文:
<人>
<名字>湯姆< /姓>
<名字>瓊斯< /姓氏>
< /人>結果:
< responseText的> aPerson爲空</responseText的>
從我的理解XML應該工作類似於JSON。任何關於我在這裏失蹤的建議?
感謝,
跳過
感謝翻轉。這很好用! – SkipHarris
很高興你還活着,翻轉! :) –
對於任何仍在使用空模型的人來說,找出錯誤的提示只是通過Request.Content.ReadAsStringAsync()來獲取請求內容,並試圖使用XmlSerializer自己反序列化XML。如果出現問題,XmlSerializer不會像Web API那樣只返回null,而是會拋出一個異常,告訴您爲什麼它不能反序列化。就我而言,這就是我發現我的XML聲明聲明瞭UTF-16編碼,而請求本身是UTF-8編碼的。如果沒有自己進行反序列化,這是我從未想到的。 – Bas