哪个个高手能不能解析一下这个原因是怎么产生的
开发模式:客户端+webservice
在本机环境系统,没有问题。部署到服务器那边就出问题了
原因是:
webservice: 由于数据量大,传输过程把dataset转换为序列化为流压缩进行传输,
在web 端: 在反序列化时候,将流反序列化为dataset时候,将null反序列化为datetime时候,null被赋值成datetime最小值,元年 0001/1/1号;
注意这个过程反序列化为dateset,
反序列化这个组件总是通用的吧。用replace这个方案不可行,还有nullable类型也是不行,因为反序列化为dataset过程是系统自动执行的 BinaryFormatter;
主要我要知道那些环境因素产生这个问题;
哪个仁兄,master在哪里
DateTime是值类型,肯定不能赋值为null的,那只能赋为default (DateTime)值,默认也就是default值。
奇怪的是,你如何将null赋给datetime?
另DataTable中的值为空时,那应该为System.Data.DBNull,就算序列化了,再反序列化也应该还是DBNull。
实测结果,不管是XmlSerialize还是BinarySerialize也都不会将DBNull改成别的值。
问题不在序列化反序列化上,肯定有其它原因。
@heros 应该是Nullable<DateTime>
感觉不太好改,不能将就着用啊,呵呵,判断为空的时间改成判断时间最小~~
真要改可能要重写一个BinaryFormatter,自定义对dateset序列化,应该也不难