【问题标题】:WCF - Built-in types not being reusedWCF - 未重用的内置类型
【发布时间】:2011-10-09 13:06:16
【问题描述】:

我有一个 WCF 服务库和另一个在 VS2010 中有服务引用的库。在引用属性上选择了“在所有引用的程序集中重用类型”。当我在使用库代码中的客户端代理命名空间范围内时,我收到此错误:

WCF 错误“异常”是一个不明确的引用 'System.Exception' 和 'My.Namespace.CoreService.Exception'

... 其中My.Namespace.CoreService 是服务引用的命名空间。我的服务库没有定义一个名为Exception 的类型;有问题的行是内置 Exception 类型的 catch 块。

奇怪的是,当我添加服务引用时,在消费项目中自动为内置类型创建了四个数据源(System.Data.DataSetSystem.Data.DataTableSystem.ServiceModel.Channels.MessageSystem.Xml.XmlElement)。这四种类型在我的一些 OperationContracts 中用作返回类型。

基于此,在我看来,内置类型并未跨程序集边界重用。这对我来说没有任何意义,有人可以帮忙吗?

谢谢

【问题讨论】:

    标签: c# wcf


    【解决方案1】:

    您在生成的代理代码中是否有一个称为异常的类型(服务在其合同中用作类型的东西)?如果是这样,您将必须完全限定类型或使用别名

    您可以通过单击在解决方案资源管理器中显示所有文件并打开服务引用和 reference.svcmap 来查看生成的代码,直到看到 reference.cs - 这是生成的代理代码

    【讨论】:

    • reference.cs 中有一个类型称为 Exception,但它不是我的服务在任何合同中使用的类型:public partial class Exception : object, System.ComponentModel.INotifyPropertyChanged {
    • 在生成的代码中是如何使用的?生成的类之一是否具有 Exception 类型的属性或类似的东西?该服务是否可以是其 Name 属性设置为“Exception”的 DataContract?
    • Reference.cs 也从这个类派生 SystemException:public partial class SystemException : Exception {} 以下属性几乎适用于 reference.cs 中的每个操作协定:[System.ServiceModel.ServiceKnownTypeAttribute(typeof(Exception))]
    猜你喜欢
    • 2012-01-07
    • 1970-01-01
    • 2011-06-16
    • 2021-10-21
    • 2012-08-17
    • 2019-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多