这是我关于SO的第一篇文章,如果我没有提供足够的信息,请原谅我。我有一个WPF应用程序尝试向我的WCF Web服务发送包含EmployeeLogin
属性的DateTime
对象,并且在调用此EmployeeLogIn()
方法时,我一直收到400错误请求错误。我搜索了很多地方寻找答案,但我无法直接回答我的具体情况。
所以我的主要问题是:发送具有通过以下方法设置的DateTime
属性的对象是否会自动转换为JSON格式(\/Date(1237951967000)\/
)并被wcf服务接受作为有效的DateTime
属性,还是将其转换为上面的JSON字符串并作为字符串传递给方法?
EDITv2:我的WPF应用程序没有以上述正确格式发送此DateTime
对象,而是将其作为"2017-08-11T13:47:55.2187627-04:00"
发送,我无法找到将其转换为正确DateTime
的方法1}}格式。我可以将它作为一个字符串加入到这种格式中,但由于本文末尾所述的原因,这将是最后的努力。
EmployeeLogin EmpLogin = new EmployeeLogin { EmployeeID = (int)UserName, Password = Pass, Latitude = 33.45, Longitude = 134.44, TimeIn = DateTime.Now }; HttpResponseMessage response = await Client.PostAsJsonAsync(string.Format(@"{0}{1}", URL, method), EmpLogin);
以下定义EmployeeLogin:
[DataContract] public class EmployeeLogin { [DataMember] public int EmployeeID { get; set; } [DataMember] public string Password { get; set; } [DataMember] public DateTime TimeIn { get; set; } [DataMember] public Nullable<double> Latitude { get; set; } [DataMember] public Nullable<double> Longitude { get; set; } }
和EmployeeLogIn方法签名如下:
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedResponse)] [return: MessageParameter(Name = "Data")] [OperationContract] List<int> EmployeeLogIn(EmployeeLogin e);
我知道最简单的解决方案是将DateTime
更改为string
属性并将其转换回Web服务端的DateTime
,但我不打算除非绝对必要,否则对Web服务进行任何更改。提前谢谢。