[英]WCF will not accept an object with a datetime property (400 bad request)
这是我关于SO的第一篇文章,所以如果我没有提供足够的信息,请原谅我。 我有一个WPF应用,试图将包含DateTime
属性的EmployeeLogin
对象发送到WCF Web服务,并且在调用此EmployeeLogIn()
方法时,始终收到400错误的请求错误。 我已经在很多地方搜索了答案,但是我无法直接回答我的具体情况。
所以我的主要问题是:发送具有通过以下方法设置的DateTime
属性的对象是否自动转换为JSON格式( \\/Date(1237951967000)\\/
),并被wcf服务接受为有效的DateTime
属性,还是将其转换为上述JSON字符串并以字符串形式传递给方法?
EDITv2:我的WPF应用未以上述正确格式发送此DateTime
对象,而是将其发送为"2017-08-11T13:47:55.2187627-04:00"
,但我想不出一种方法将其放入正确的DateTime
格式。 我可以将它作为字符串形式转换为这种格式,但是由于本文结尾所述的原因,这将是最后的努力。
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 Service进行任何更改。 先感谢您。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.