【问题标题】:wsdl objects are repeated when I add webservice reference当我添加 web 服务引用时重复 wsdl 对象
【发布时间】:2013-09-30 14:12:41
【问题描述】:

当我添加 web 服务引用(不是服务引用)时,我得到了相同的元素,并将后缀重命名为 1,如图所示。当我尝试调试时,这会导致错误。内部异常说

Message=Types 'service.AddressType1' 和 'service.AddressType' 都使用来自命名空间 'xxx' 的 XML 类型名称 'AddressType'。使用 XML 属性为类型指定唯一的 XML 名称和/或命名空间。

我理解这个错误,我已经在这里看到了一些不同的线程,它们告诉我应该指定不同的命名空间,但我没有在代理类的任何地方定义 AddressType1。我只有地址类型。我从哪里得到 AddressType1 或其他? 其他人有这个错误吗?感谢您的帮助。

【问题讨论】:

    标签: web-services wsdl xml-serialization


    【解决方案1】:

    你看过这个答案吗? Inheriting Existing .Net Class Serialization Error

    这个答案还讨论了分层命名空间的问题(似乎你可能正在这样做),所以这可能是你的主要问题:Classes in different sub-namespaces all appear at top level in WSDL

    看来您可能需要指定 XmlTypeAttribute。您能否提供您的代码示例以供审核?

    【讨论】:

    • 我通过您的第二个链接找到了原因和解决方案,并在下面回复了更多详细信息。谢谢。
    【解决方案2】:

    我继承了使用 xsd2code 工具生成的代理类。问题是这个工具为父 xsd 类正确生成了命名空间,但是当我检查子类中由其他父类共享/公共的类时,命名空间字段似乎为空,如下所示。因此,如问题所示,我的服务参考多次具有相同的属性/类,并带有 1 个后缀。我刚刚为这些子类/继承类添加了相同的命名空间,它工作正常并且没有重复的属性。我希望这对遇到类似问题的其他人有所帮助。

     System.Xml.Serialization.XmlRootAttribute([Namespace]:="", IsNullable:=True), _
    

    【讨论】:

      猜你喜欢
      • 2013-09-02
      • 1970-01-01
      • 2013-02-05
      • 1970-01-01
      • 2011-03-04
      • 1970-01-01
      • 2011-10-04
      • 2011-01-23
      • 2011-10-13
      相关资源
      最近更新 更多