WCF之KnownTypes & ServiceKnownTypes

WCF通讯中的自定义类型传输可能导致由于不识别继承关系而出现错误。当接口参数使用派生类对象但定义为基类时,DataContractSerializer无法正确处理。解决方法包括在服务接口或基类上使用ServiceKnownTypes或KnownTypes标签声明派生类,或者通过定义DataContractResolver来定制序列化行为。
摘要由CSDN通过智能技术生成

简单的WCF通讯可能用不到KnownTypes & ServiceKnownTypes,但是万一不小心你触发了以下这个报错,那你可能就会被WCF的设计者诱骗到以上二者那里。

"*System.ServiceModel.CommunicationException: 尝试对参数 http://tempuri.org/ 进行序列化时出错: exContent。InnerException  消息是“数据协定名称为“AppExceptionContext:http://schemas.datacontract.org/2004/07/SPRUCE800.Demo.Communication”的类型“SPRUCE800.Demo.Communication.AppExceptionContext”不是所需的类型。请考虑使用 DataContractResolver(如果你正在使用 DataContractSerializer),或将任何未知类型以静态方式添加到已知类型的列表。例如,可以使用 KnownTypeAttribute 属性,或者将未知类型添加到传递给序列化程序的已知类型列表。”。有关详细信息,请参见 InnerException。 ---> System.Runtime.Serialization.SerializationException: 数据协定名称为“AppExceptionContext:http://schemas.datacontract.org/2004/07/SPRUCE800.Demo.Communication”的类型“SPRUCE800.Demo.Communication.AppExceptionContext”不是所需的类型。请考虑使用 DataContractResolver(如果 你正在使用 DataContractSerializer),或将任何未知类型以静态方式添加到已知类型的列表。例如,可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值