2012-05-10 33 views
0

我建立在C#中的REST API - 和我設置了一些POST的 - 這裏的接口:C#接受圖片爲HttpPostedFile REST風格的API

[SecurityTokenValidator("Registered Users")] 
    [OperationContract] 
    [WebInvoke(ResponseFormat = WebMessageFormat.Xml, RequestFormat = WebMessageFormat.Xml, UriTemplate = "camps/{campid}/markings/{token}", Method = "POST")] 
    MarkingDto InsertMarking(string campid, string token, MarkingDto markingDto); 

這是我的MarkingDto

[DataContract(Namespace = "FreeBeer")] 
public class MarkingDto 
{ 
    [DataMember] public int Id; 
    [DataMember] public decimal Latitude; 
    [DataMember] public decimal Longitude; 
    [DataMember] public string MarkingType; 
    [DataMember] public DateTime DateTime; 
} 

在Fiddler中構建測試POST - 我注意到如果我的RequestBody不是按字母順序排列 - 有些項目爲空或零。例如 - 如果請求正文如此 - 經度在緯度前出現 - 緯度將爲零(0)。

<MarkingDto xmlns="BigGameLogic"> 
<Longitude>456</Longitude> 
<Latitude>123</Latitude> 
<MarkingType>Scrape</MarkingType> 
</MarkingDto> 

但如果按字母順序保存 - 一切都在那裏。這只是一個提琴手嗎?或者這是我需要解決的問題,因爲我缺少簡單的解決方案;)

回答

2

這是WCF中的一項要求,除非您在DataMember上指定了按字母順序發送成員屬性的順序。

看到這個問題的答案resently

Not all parameters in WCF data contract make it through the web service call

更多信息可以在這裏找到

msdn.microsoft.com/en-us/library/ms729813.aspx

謝謝

+0

感謝您解決這個問題 - 就像@Robert Harvey的另一個問題 - 讓程序員想要掐死某人的東西類型 – ajwaka