3

我有一个被 Silverlight 和 .NET 客户端使用的 WCF Web 服务。为了与两个客户端共享数据合同类型,合同在两个类库中定义:一个 Silverlight 和一个 .NET。定义数据协定类型的文件通过链接在两个库项目之间共享。

生成使用服务的代理非常适合 .NET。具体来说,我的 .NET 类库中的数据协定类型按预期重复使用。

但是,通过 SlSvcUtil.exe 生成 Silverlight 代理不会重用数据协定类型。无论我使用 /r 开关从命令行调用 SlSvcUtil.exe 还是使用 Visual Studio 中的“添加服务引用”对话框,这都是正确的。

通过反复试验,我确定在单一服务方法中使用的单一类型是此问题的根源。如果服务停止使用此类型,SlSvcUtil.exe 将按预期生成代理(使用从数据协定程序集中重用的类型)。

现在我已经将问题缩小到这种类型,我不确定接下来要寻找什么。该类型确实包含一个实现 IXmlSerializalble 的成员。这会导致这种行为吗?造成这种情况的一些常见原因是什么?有哪些好的方法可以进一步排除故障?

4

1 回答 1

2

我敢肯定你早​​就离开了这个,但今天早上我遇到了一个类似的问题——我有一个没有默认构造函数的类型。添加一个后,运行 SlSvcUtil 时神秘类型消失了。不过,为什么它可以与 SvcUtil 一起正常工作,这超出了我的理解。希望这可以帮助!

于 2011-12-16T15:17:50.680 回答