【发布时间】:2013-07-10 22:02:42
【问题描述】:
这个问题的变体显然已经被问了几十次,但我需要的解决方案似乎非常难以捉摸。我希望这次是魅力!
我有一个 C# 应用程序,它通过 SOAP xml 与 Java Web 服务进行通信。应用程序使用 WSDL 导入服务没有问题。但是,其中一个 xml 对象的类型是 dateTime。
<complexType name="Interaction">
<sequence>
<element name="ContactDate" type="dateTime" minOccurs="0" maxOccurs="1"/>
</sequence>
</complexType>
我有一个从数据库中检索到的日期,如下所示:2013-07-10。 我需要使用 UTC 格式将它放入 XML dateTime 对象:yyyy-MM-ddTHH:mm:ss.fffzzz
我可以轻松地将其转换为正确解析的字符串。那不是问题。当我尝试将数据加载到服务对象中时会出现此问题。我无法将数据作为字符串加载。它必须是一个 DateTime 对象,但 DateTime 拒绝使用 UTC 格式。
我认为这可能是序列化的问题。我认为在转换为要发送到 Web 服务的 xml 时无法正确序列化。以下是此特定元素的序列化信息:
[System.Xml.Serialization.XmlElementAttribute(Order=2)]
public System.DateTime ContactDate {
get {
return this.contactDateField;
}
set {
this.contactDateField = value;
this.RaisePropertyChanged("ContactDate");
}
}
关于我可能遗漏或做错了什么的任何想法?任何帮助将不胜感激。 谢谢!
【问题讨论】:
-
这是序列化问题,还是解析问题?这个答案有帮助吗? stackoverflow.com/a/1756681/116895
-
另一个潜在的帮助? stackoverflow.com/q/6314154/116895
-
仍在研究这个,但提供的这两个提示似乎都是针对采用 xml 或 DateTime 并将其转换为字符串的常见场景。转换为字符串似乎不是问题。更多的是强制 DateTime 序列化为正确的格式。如果我能捕获序列化的输出来验证它放在那里的东西,那就太好了。
-
我想我明白为什么我的答案不是您想要的,但我很难理解这在哪里发生了故障。你从数据库中得到一个
System.DateTime,然后把它放到ContactDate属性中,然后序列化所有东西,你得到了什么?你得到你当地的时区偏移量还是别的什么? -
我现在几乎可以完全确定这是一个序列化问题。我试图将 ContactDate 设置为 DateTime 对象和字符串(在将参考内容更改为字符串而不是 System.DateTime 之后)。在另一端管理 Web 服务的人报告,在这两种情况下,接收到的值都是空的。所以我设置了一个值,但它没有到达目的地。
标签: c# .net xml serialization wsdl