我正在C#中构建一个rest api - 我正在设置一些POST - 这是界面:
[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不是按字母顺序排列 - 有些项目为null或为零。例如 - 如果请求正文是这样的 - 经度在纬度之前出现 - 纬度将为零(0)。
<MarkingDto xmlns="BigGameLogic">
<Longitude>456</Longitude>
<Latitude>123</Latitude>
<MarkingType>Scrape</MarkingType>
</MarkingDto>
但如果按字母顺序排列 - 一切都在那里。这只是一个小提琴手吗?或者这是我需要解决的问题,因为我缺少简单的解决方案;)
答案 0 :(得分:2)
WCF中要求除非您在DataMember上指定成员属性按字母顺序发送的订单。
怨恨地看到这个问题的答案
Not all parameters in WCF data contract make it through the web service call
可在此处找到更多信息
msdn.microsoft.com/en-us/library/ms729813.aspx
由于