通过Silverlight应用程序调用WCF Service时遇到的NotFound异常

在项目中遇到了一个问题,这个问题困扰了我很久了,在我的项目中有两个solution,第一个solution是一个Silverlight Website,第二个solution是一个本地的wcf service,其中wcf service是用来调用远程的两个service,这里我把远程的两个service命名为RemoteServiceA和RemoteServiceB。整个调用过程请参看下图:

CAL3

(发现没有装visio,图稍后补上)

流程是这样的,本地service去调用远程的两个service(RemoteServiceA和RemoteServiceB),Silverlight再去调用本地的service,在这里,调用RemoteServiceA的整个过程没有出现问题,但在Silverlight Website发送请求给本地service后,本地service通过传递过来的参数去找RemoteServiceB拿数据,数据也可以成功的返回给本地service,但当本地service的方法将返回值回传给Silverlight的时候出现了异常,出现异常的地方是Silverlight应用程序对本地service的引用中,也就是大家知道的reference.cs文件中,具体产生异常的方法是Base.EndInvoke这里,总是提示”CommunicationException: The remote server returned error message: NotFound”,通过不断的实验、测试发现,如果我将返回的对象中的数据(我需要的数据都是保存在对象的属性中的)赋值给字符串,然后返回这个字符串,而非这个对象,则不会出现异常,后来也试过返回其他基本类型,如int、bool等等都可以,也就是说我返回的代理类中的类型是不能被解析的。后来通过同事的帮助,发现问题出在本地service的接口方法定义上,需要在我调用RemoteServiceB的方法上加上[XmlSerializerFormat]的描述信息,出现问题的原因就在于本地service方法返回给Silverlight的对象需要序列化。由此问题解决,但最后还是有一点不明白的就是为什么同样是Remote service,RemoteServiceA能够完成整个通讯过程呢?还需要继续研究一下。

转载于:https://www.cnblogs.com/yipingw/archive/2009/10/15/1583686.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值