我正在用 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 是否按字母顺序排列——有些项目出现空值或零。例如 - 如果请求正文是这样的 - 经度在纬度之前出现 - 纬度将为零 (0)。
<MarkingDto xmlns="BigGameLogic">
<Longitude>456</Longitude>
<Latitude>123</Latitude>
<MarkingType>Scrape</MarkingType>
</MarkingDto>
但如果按字母顺序排列 - 一切都在那里。这只是提琴手的事情吗?或者这是我需要解决的问题,因为我缺少简单的解决方案;)