2
我正在使用Fiddler組合對我的Web API服務的調用。通話正在進行,我正在調試它在控制器中。但是,Request.Content.Headers.ContentType
是null
。然而,當我檢查的對象,我可以看到Content-Type: application/xml;
象下面這樣:爲什麼Request Header Null上的ContentType屬性?
?Request.Content.Headers
{Content-Length: 40039
Content-Type: application/xml;
}
base {System.Net.Http.Headers.HttpHeaders}: {Content-Length: 40039
Content-Type: application/xml;
}
Allow: {}
ContentDisposition: null
ContentEncoding: {}
ContentLanguage: {}
ContentLength: 40039
ContentLocation: null
ContentMD5: null
ContentRange: null
ContentType: null
Expires: null
LastModified: null
什麼我需要做的是能夠檢查ContentType
值,並將它填充?
編輯:這裏是方法簽名爲我Post方法:
public HttpResponseMessage Post(MyMethodDTO message)
MyMethodDTO
僅僅是一個簡單的DTO類的getter /是所有字符串setter方法。
奇怪的是我加入吧','所以通話會,但經過這是一個錯誤。當我刪除它時,出現以下錯誤:'沒有MediaTypeFormatter可用於從媒體類型爲'application/xml''的內容讀取'MyMethodDTO'類型的對象我使用方法簽名更新了OP。 – atconway 2013-03-06 02:32:50
想通了 - 我使用的是在Global.asax中註冊的XMLSerializer,而不是DataContractSerializer。當我刪除使用XMLSerializer的註冊並返回到DataContractSerializer並從Content-type中刪除';'時,它就起作用了。我可以提出一個新問題,但如果您不介意,爲什麼我不能在Post中使用XMLSerializer和XML? – atconway 2013-03-06 03:17:22
檢查控制器上的ModelState屬性是否存在反序列化錯誤。有可能,使用XmlSerializer進行反序列化時出現問題。 – 2013-03-06 18:58:14