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

在创建WCF Rest服务时,我注意到我的Web服务中的所有参数都没有进入我的实现。

这是界面:

[ServiceContract(Namespace="http://example.com/recordservice")] public interface IBosleySchedulingServiceImpl { [OperationContract] [WebInvoke(UriTemplate = "Record/Create", RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.Bare, Method = "POST")] string CreateRecord(Record record); } [DataContract(Namespace="http://example.com/recordservice")] public class Appointment { [DataMember] public int ResponseType { get; set; } [DataMember] public int ServiceType { get; set; } [DataMember] public string ContactId { get; set; } [DataMember] public string Location { get; set; } [DataMember] public string Time { get; set; } } 

我正在传递这个XML:

  1123-123 Fresno 2012-05-05T08:30:00 45 45  

在我的服务中,我只是将值输出到日志中,以便我可以validation这些值是暂时的:

 logger.Debug("ContactId: " + appointment.ContactId); logger.Debug("Time Field: " + appointment.Time); logger.Debug("Location: " + appointment.Location); logger.Debug("Response Type: " + Convert.ToInt32(appointment.ResponseType)); logger.Debug("ServiceType: " + Convert.ToInt32(appointment.ServiceType)); 

但是,在我的输出中,整数值以零的forms出现:

 ContactId: 1123-123 Time Field: 2012-05-05T08:30:00 Location: Fresno Response Type: 0 ServiceType: 0 

当我从DataContract和服务实现中删除字符串时,整数值没有问题。

 Response Type: 45 ServiceType: 45 

我对此完全感到困惑,我们将非常感谢任何帮助。

默认情况下,当您通过wcf发送对象时,除非您指定订单,否则将按字母顺序发送属性。

您可以指定属性的顺序或更改顺序,以便它们按字母顺序显示。

 [DataContract(Namespace="http://example.com/recordservice")] public class Appointment { [DataMember(Order = 1)] public int ResponseType { get; set; } [DataMember(Order = 2)] public int ServiceType { get; set; } [DataMember(Order = 3)] public string ContactId { get; set; } [DataMember(Order = 4)] public string Location { get; set; } [DataMember(Order = 5)] public string Time { get; set; } }