WCF不接受具有datetime属性的对象(400错误请求)

时间:2017-08-10 20:52:57

标签: c# json wpf wcf datetime

这是我关于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服务进行任何更改。提前谢谢。

0 个答案:

没有答案