0

我正在用 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>

但如果按字母顺序排列 - 一切都在那里。这只是提琴手的事情吗?或者这是我需要解决的问题,因为我缺少简单的解决方案;)

4

1 回答 1

2

WCF 中的一项要求是,除非您在 DataMember 上指定顺序,否则成员属性将按字母顺序发送。

重新看到这个问题的答案

并非 WCF 数据协定中的所有参数都通过 Web 服务调用

更多信息可以在这里找到

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

谢谢

于 2012-05-10T23:08:32.023 回答