C# WCF/WPF日期时间返回null
我有一个WPF应用程序正在调用WCF服务。在WCF服务中,我调用数据库并返回一些项目,其中包括datetime 下面是我如何返回数据的C# WCF/WPF日期时间返回null,c#,wpf,wcf,datetime,C#,Wpf,Wcf,Datetime,我有一个WPF应用程序正在调用WCF服务。在WCF服务中,我调用数据库并返回一些项目,其中包括datetime 下面是我如何返回数据的 List<MessageData> messages = new List<MessageData>(); //sql stuff while (reader.Read()) { MessageData message = new MessageData(); message.ID = (Guid)reader["mes
List<MessageData> messages = new List<MessageData>();
//sql stuff
while (reader.Read())
{
MessageData message = new MessageData();
message.ID = (Guid)reader["message_id"];
message.Description = reader["subject"].ToString();
messageData.IssuedDate = reader["issued_date"].ToString();
message.Severity = reader["severity"].ToString();
message.Specialty =reader["specialty"].ToString();
messages.Add(message);
}
List messages=newlist();
//sql材料
while(reader.Read())
{
MessageData message=newmessagedata();
message.ID=(Guid)读取器[“message_ID”];
message.Description=reader[“subject”].ToString();
messageData.IssuedDate=读卡器[“发布日期”].ToString();
message.Severity=reader[“Severity”].ToString();
message.speciality=reader[“speciality”].ToString();
消息。添加(消息);
}
在MessageData中,我将IssuedDate指定为日期时间和字符串。
在调试程序中,我看到一个实际的日期时间被放置在IssuedDate中。
当它返回到WPF应用程序时,IssuedDate为null,并且该值丢失
WPF侧
List<CWeb.MessageData> data = new CWeb.SCClient().GetMessages(messageData, Global.Token).ToList();
List data=new CWeb.SCClient().GetMessages(messageData,Global.Token).ToList();
有什么提示吗?我猜它在序列化/反序列化中丢失了
更新
当我将随机词指定给IssuedDate(当它是字符串时),例如:“why you no work”
返回时,字符串未拒绝以日期时间格式返回任何内容。可能是您的合同不匹配吗?可能客户端需要一个
DateTime
,其中服务提供字符串
WCF能够在数据契约中返回DateTime
。因此MessageData.IssuedDate
应该是DateTime
,您可以使用类似的方法从数据读取器获取它:
message.IssuedDate = reader["issued_date"] as DateTime? : DateTime.MinValue;
我还注意到一件事:IssuedDate
属性是在message
对象中唯一没有设置的属性,而是messageData
对象。您确定使用的对象正确吗
此外,当以字符串形式返回
DateTime
时,您应该将其转换为某种国际格式,您可以将其可靠地转换回,例如ToString(“yyyyMMdd HH:mm:ss”)
您可以在UI端覆盖从WCF服务检索到的值,也可以在WCF端本身覆盖,进一步到这个代码?在退出读卡器后,返回消息,这样它就不会在WCF端被覆盖。在包含列表的WPF端数据上,所有IssuedDate都为空。