【问题标题】:Connect several web services with same object type连接多个具有相同对象类型的 Web 服务
【发布时间】:2020-12-21 16:56:06
【问题描述】:

我想连接几个共享通用对象类型的 Web 服务。在 GUI 中使用 VS 的内部工具:添加服务引用...不是一个选项,因为它会导致由于命名空间不同而导致相同类类型的多个定义。

我试过命令行wsdl:

wsdl /sharetypes /language:CS /namespace:MyNameSpace /out:references.cs /protocol:SOAP http://AddressWS1?wsdl http://AddressWS2?wsdl http://AddressWS3?wsdl

这可行,但我有点困惑,因为我习惯使用此处不存在的“app.config”文件。

我也试过: svcutil.exe /language:cs /out:references.cs /config:app.config http://AddressWS1?wsdl http://AddressWS2?wsdl http://AddressWS3?wsdl

它不起作用,因为我收到了几个类型的错误:“全局元素 xxx 已被声明。”

有没有更好的解决方案?

感谢您的帮助

【问题讨论】:

    标签: web-services wsdl svcutil.exe


    【解决方案1】:

    仅仅因为它们在您(开发人员)看来是相同的形状,但它们位于不同的命名空间中,这意味着它们实际上是不同的,因此必须这样对待。

    完全有可能,如果您的想法付诸实施,其中一个 Web 服务会决定在其响应中添加另一个字段,而不是其他字段,然后您必须再次拆分它们。

    【讨论】:

    • 感谢您的回答。通过“不同的名称空间”,我的意思是当使用 VS“添加服务引用”中的工具时,我必须分别为每个 web 服务执行此操作,并且每次选择不同的名称空间。从 web 服务端看,对象是相同的。从我的项目中,我实际上在 service1 的上下文中看到了 ObjectA 的定义,在 service2 的上下文中看到了另一个定义...
    • 使用“wsdl”命令行,我能够生成代理类而不重复相同的对象,但我更愿意继续使用 app.config 文件。 svcutil.exe 会更好,但我不能让它按照我的问题中的说明工作。
    猜你喜欢
    • 2019-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-28
    • 1970-01-01
    • 1970-01-01
    • 2019-06-12
    • 1970-01-01
    相关资源
    最近更新 更多