首页 新闻 赞助 找找看

webservice dataset传输过程中datetime问题(难度比较大)

0
悬赏园豆:80 [已关闭问题]

哪个个高手能不能解析一下这个原因是怎么产生的 
开发模式:客户端+webservice
在本机环境系统,没有问题。部署到服务器那边就出问题了
原因是:
webservice: 由于数据量大,传输过程把dataset转换为序列化为流压缩进行传输,
在web 端: 在反序列化时候,将流反序列化为dataset时候,将null反序列化为datetime时候,null被赋值成datetime最小值,元年 0001/1/1号;

注意这个过程反序列化为dateset,
反序列化这个组件总是通用的吧。用replace这个方案不可行,还有nullable类型也是不行,因为反序列化为dataset过程是系统自动执行的 BinaryFormatter;


主要我要知道那些环境因素产生这个问题;
哪个仁兄,master在哪里

林义相的主页 林义相 | 初学一级 | 园豆:120
提问于:2010-04-10 09:11
< >
分享
其他回答(1)
0

DateTime是值类型,肯定不能赋值为null的,那只能赋为default (DateTime)值,默认也就是default值。

奇怪的是,你如何将null赋给datetime?

另DataTable中的值为空时,那应该为System.Data.DBNull,就算序列化了,再反序列化也应该还是DBNull。

实测结果,不管是XmlSerialize还是BinarySerialize也都不会将DBNull改成别的值。

问题不在序列化反序列化上,肯定有其它原因。

heros | 园豆:761 (小虾三级) | 2010-04-10 09:50
0

@heros 应该是Nullable<DateTime>

感觉不太好改,不能将就着用啊,呵呵,判断为空的时间改成判断时间最小~~

真要改可能要重写一个BinaryFormatter,自定义对dateset序列化,应该也不难

LittlePeng | 园豆:3445 (老鸟四级) | 2010-04-10 12:46
一张表里面那一个列返回就是datetime类型。里面有是null的都被弄成mindatevalue了,如果是用判断的话,我也可以在gridview的绑定事件里面也可以过滤,但是现在我想找出原因,是什么环境因素导致这种情况的出现,以前没有出现这样的情况,现在出现了
支持(0) 反对(0) 林义相 | 园豆:120 (初学一级) | 2010-04-12 20:26
我想得去看看BinaryFormatter是怎么实现的~~
支持(0) 反对(0) LittlePeng | 园豆:3445 (老鸟四级) | 2010-04-13 08:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册