RPC中的反序列化问题

matboy 2003-08-18 11:58:02
RPC调用服务器端组件中的方法,传递一个DATATABLE对象,其中有个列为DECIMAL型,对应数据库(SQLSERVER2000)中为DECIMAL (9,2),当该列值为0.00001时,出现以下错误:
System.Reflection.TargetInvocationException: 调用的目标发生了异常。 ---> System.FormatException: 输入字符串的格式不正确。
at System.Number.ParseDecimal(String s, NumberStyles style, NumberFormatInfo info)
at System.Decimal.Parse(String s, NumberStyles style, IFormatProvider provider)
at System.Xml.XmlConvert.ToDecimal(String s)
at System.Data.Common.DecimalStorage.ConvertXmlToObject(String s)
at System.Data.DataColumn.ConvertXmlToObject(String s)
at System.Data.XmlDataLoader.LoadData(DataRow& row, DataTable parentTable, Boolean[] foundColumns)
at System.Data.XmlDataLoader.LoadData(DataTable parentTable)
at System.Data.XmlDataLoader.LoadData(XmlReader reader)
at System.Data.DataSet.ReadXmlDiffgram(XmlReader reader)
at System.Data.DataSet.ReadXml(XmlReader reader, XmlReadMode mode)
at System.Data.DataTable..ctor(SerializationInfo info, StreamingContext context)
--- 内部异常堆栈跟踪的结尾 ---
问题是:
如果换成1.00001或者0.0001就可以,而且System.Number.ParseDecimal(String s, NumberStyles style, NumberFormatInfo info)在帮助文件中又找不到

我想估计是传递的NumberStyles有问题

请各位高手赐教!
...全文
175 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
matboy 2003-09-09
  • 打赏
  • 举报
回复
虾虾,谢谢你了
我再顶,周末结帖
fankun 2003-09-07
  • 打赏
  • 举报
回复
快点UP,支持楼主!
matboy 2003-09-05
  • 打赏
  • 举报
回复
不行,没办法跟踪,因为这是在RPC时系统后台发生的转换,单独测试Decimal.Parse和XmlConvert.ToDecimal()肯定是没有什么问题的,关键是我没有办法得到它里面每一层到底传递的是什么参数值。
不过还是谢谢sumtec(Psydian),再等几天,没有高人解答就结帖了
matboy 2003-08-24
  • 打赏
  • 举报
回复
谢谢sumtec(Psydian),我也这么想。试试看
sumtec 2003-08-21
  • 打赏
  • 举报
回复
我觉得很可能是IFormatProvider里面的什么地方出了问题,比如你改变过CultureInfo(在控制面板里面改变了当前区域的数字格式),等等。因为我在我的机子上没有办法重现一次你的问题,当然我只是简单的使用了Decimal.Parse(,,)和XmlConvert.ToDecimal(),传进去的字符串是"0.00001"。

你试一下调试你的程序,然后看看XmlConvert.ToDecimal里面的字符串参数具体是什么。
lmdhit 2003-08-20
  • 打赏
  • 举报
回复
学习!
matboy 2003-08-20
  • 打赏
  • 举报
回复
你这小子,想到哪里去了
lonelystarcn 2003-08-20
  • 打赏
  • 举报
回复
UP更斯文点。
matboy 2003-08-19
  • 打赏
  • 举报
回复
不是的,如果这样,0.0001也当作0啊,问题是为什么到反序列化就不行,而且是这么特殊的值范围才不行,请教!
panyee 2003-08-19
  • 打赏
  • 举报
回复
数据库最多把0.00001当成0看待吧??

matboy 2003-08-19
  • 打赏
  • 举报
回复
顶一下

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧