首页 新闻 会员 周边 捐助

格式化程序尝试对消息反序列化时引发异常

0
悬赏园豆:10 [已解决问题] 解决于 2012-11-15 10:32

格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://www.glasslab.cn/ 进行反序列化时出错: GetAllMemberCardListResponse。InnerException 消息是“无法将无效的枚举值“转让失效”反序列化为类型“HuaAo.Admin.ServiceRef.BeanState”。如果该类型具有 DataContractAttribute 属性,则请确保显示必要的枚举值且标记为 EnumMemberAttribute 属性。”。有关详细信息,请参阅 InnerException。

尛柒的主页 尛柒 | 初学一级 | 园豆:179
提问于:2012-11-15 09:17
< >
分享
最佳答案
0

HuaAo.Admin.ServiceRef.BeanState 是一个枚举,

正常来说, 消息中的数据应该是该枚举的某一个项, 比如, 如果该枚举有Open,Closed 两项, 那么数据中必须为这二者之一.  但是现在你的数据中出现了汉字 "转让失效" , 并且尝试将这四个汉字转成枚举类型HuaAo.Admin.ServiceRef.BeanState, 这是不可能的, 当然就要出错了.

出现这个问题的原因是消息(也就是一个包含了数据的字符串) 中包含了非法数据.  要检查消息是从哪儿发来的, 为什么会出现中文.

收获园豆:10
夏狼哉 | 小虾三级 |园豆:833 | 2012-11-15 10:23
其他回答(4)
0

不同的类型转换失败

田林九村 | 园豆:2367 (老鸟四级) | 2012-11-15 09:46
0
[DataContract]
public class term : terminal
{
[DataMember]
public int ID { get; set; }

[DataMember]
public string termNO { get; set; }
}


http://www.cnblogs.com/LazyBee/archive/2008/02/26/1082553.html
chenping2008 | 园豆:9836 (大侠五级) | 2012-11-15 09:46

谢谢!

支持(0) 反对(0) 尛柒 | 园豆:179 (初学一级) | 2012-11-15 10:34
0

GetAllMemberCardListResponse方法里面反序列化的问题,没代码,只能你自己调试了。

青 蛙 | 园豆:655 (小虾三级) | 2012-11-15 10:01
0

public enum BeanState

{

[EnumMember(Value = "Null")]

   Null = 0,

[EnumMember(Value = "Pushed")]

   Pushed = 1,
}

反序列化的时候,可以把字符串 "Pushed"自动识别为 BeanState.Pushed。

Launcher | 园豆:45050 (高人七级) | 2012-11-15 10:22

谢谢!

支持(0) 反对(0) 尛柒 | 园豆:179 (初学一级) | 2012-11-15 10:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册