使用空或无效日期元素反序列化 SOAP 响应
我正在使用 SAP-NetWeaver Web 服务。响应对象包含一个数据,如果未设置,则返回“0000-00-00”。这会导致我的 .NET 4.0 WCF 代理中出现反序列化错误,因为 .NET 的最小有效日期为“0001-01-01”。
我要求 SAP 开发人员用 minoccurrs="0" 属性装饰日期元素,如果没有值则忽略它,但他说他不能这样做。
在我要求他为空日期返回“0001-01-01”之前(仅针对我的 WCF 代理),我想知道:
“0000-00-00”是 SOAP 中的有效日期吗?在任何 SOAP 规范中都找不到它,因此请告诉我您的信息来源。
有没有办法告诉 .NET 反序列化器接受“0000-00-00”并像 DateTime.MinValue 一样处理它?</p>
非常感谢!
更新: 现在,如果日期为 null,SAP-web-service 将返回一个空元素。但我的问题仍然是一样的。
I am consuming a SAP-NetWeaver web-service. The response object contains a data and when it is not set it returns "0000-00-00". This leads to a deserialization error in my .NET 4.0 WCF proxy because the minimum valid date for .NET would be "0001-01-01".
I asked the SAP-developer to decorate the date element with the minoccurs="0" attribute and omit it if there's no value present but he states he can't do so.
Before I ask him to return "0001-01-01" for empty dates - just for my WCF proxy - I would like to know:
Is "0000-00-00" a valid date in terms of SOAP? Couldn't find it in any SOAP specification so please let me know your source of information.
Is there a way to tell the .NET deserializer to accept "0000-00-00" and handle it like DateTime.MinValue?
Many thanks!
UPDATE:
Now the SAP-web-service returns an empty element if the date is null. But my problem remains the same.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
关于这个有一个很好的谈话
可以简单地实现类的自定义反序列化。这样“0000-00-00”的值将被捕获并转换为 DateTime.MinValue。
UPD:这是我一直在谈论的代码。
there's a nice talk on this
here
it is possible to simply implement custom de serialisation of the class. so that the values of "0000-00-00" would be catched and converted into DateTime.MinValue.
UPD: this is the code I've been talking about.
您可以实现 SOAP 扩展来在反序列化之前更改 SOAP:
http://msdn .microsoft.com/en-us/library/7w06t139.aspx
You can implement a SOAP Extension to alter the SOAP before it's deserialized:
http://msdn.microsoft.com/en-us/library/7w06t139.aspx