WCF / WPF DateTime返回null

时间:2013-12-04 13:52:13

标签: c# wpf wcf datetime

我有一个调用WCF服务的WPF应用程序。在WCF服务中,我调用数据库并返回一些包含日期时间的项目。

以下是我如何返回数据。

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);
}
MessageData中的

我已将IssuedDate指定为DateTime和字符串。 单步执行调试器,我看到实际的DateTime被放置在IssuedDate中。 当它返回到WPF应用程序时,IssuedDate为null并且值丢失。

WPF方

List<CWeb.MessageData> data = new CWeb.SCClient().GetMessages(messageData, Global.Token).ToList();

任何提示?我猜它在序列化/反序列化中丢失了?

更新 当我将字符串中的随机单词分配给IssuedDate时,例如:'为什么你不工作' 它返回时,该字符串不会拒绝以日期时间格式返回任何内容。

1 个答案:

答案 0 :(得分:1)

这可能是你的合同不匹配吗?也许客户希望DateTime服务提供String

WCF能够在数据合同中返回DateTime。因此MessageData.IssuedDate应为DateTime,您可以使用类似的内容从数据读取器中获取它:

message.IssuedDate = reader["issued_date"] as DateTime? : DateTime.MinValue;

我注意到的另一件事:IssuedDate属性是您未在message对象中设置的唯一属性,而是messageData对象。你确定你使用的是正确的物体吗?

此外,在将DateTime作为字符串返回时,您应该将其转换为可以可靠转换回的国际格式,例如ToString("yyyyMMdd HH:mm:ss")