我有一个由Silverlight和.NET客户端使用的WCF Web服务。为了与两个客户共享数据协定类型,合同在两个类库中定义:一个Silverlight和一个.NET。定义数据协定类型的文件通过链接在两个库项目之间共享。
生成代理以使用该服务可以很好地适用于.NET。具体来说,我的.NET类库中的数据协定类型按预期重用。
但是,通过SlSvcUtil.exe生成Silverlight代理不会重用数据协定类型。无论我是使用/ r开关从命令行调用SlSvcUtil.exe还是使用Visual Studio中的“添加服务引用”对话框,都是如此。
通过反复试验,我确定单一服务方法中使用的单一类型是此问题的根源。如果服务停止使用此类型,则SlSvcUtil.exe会按预期生成代理(从数据协定程序集中重用类型)。
现在我已将问题缩小到这种类型,我不确定下一步该寻找什么。该类型包含实现IXmlSerializalble的成员。这会导致这种行为吗?造成这种情况的常见原因是什么?有哪些好的方法可以进一步排除故障?
答案 0 :(得分:2)
我确信你很久以前就已经开始了,但今天早上我遇到了类似的问题 - 我有一个没有默认构造函数的类型。添加一个后,运行SlSvcUtil时神秘类型就消失了。但是,为什么它可以与SvcUtil一起正常工作。希望这有帮助!