我有一个包含服务方法的WCF服务(Webservice HTTP),此方法采用包含DateTime?
(可空)的数据合同。
当客户端将此类字符串发送到此DateTime字段
时,会出现异常报告"2018-04-00T00:00:00"
我知道这不是一个正确的日期时间,但根据BizTalk用户这是一个Web服务标准吗?
那么我应该如何处理WCF?
答案 0 :(得分:1)
WCf使用this DateTime xml schema。根据模式,格式似乎有效,但由于第三个参数(00)表示日期和正确的日期参数从01开始,因此失败。
答案 1 :(得分:1)
我可以看到这是一种灰色区域,但事实是序列化程序无法处理正在发送的数据。序列化程序是防御消息中不良数据的第一道防线,也是唯一可以捕获所有可能的错误数据排列的方法(除非你有500行验证代码)。如果明天他们决定给你发送“2018-78-45T00:00:00”之类的日期怎么办?
对我而言,这意味着改变的负担在呼叫者方面。完全停止。问题不在于他们发送格式错误的数据,而是他们发送的数据非常糟糕。
如果他们无法提供正确填充的日期值,那么使用该信息将异常返回给他们是一个完全合理的解决方案。