【问题标题】:Share types between multiples wsdl references in C#在 C# 中的多个 wsdl 引用之间共享类型
【发布时间】:2013-03-11 17:11:38
【问题描述】:

我正在尝试使用这个 wsdl:http://www.ans.gov.br/padroes/tiss/schemas/ 问题是当对 wsdl 的引用添加到 C# 项目中时,会为相同的 xsd 类型(如 cabecalhoTransacao)创建不同的命名空间,所以使用时应该是这样的:

  • tissCancelaGuia.cabecalhoTransacao
  • tissVerificaElegabilidade.cabecalhoTransacao

如何在不转换的情况下解决?有可能吗?

【问题讨论】:

  • 添加 Web 引用,还是添加服务引用?

标签: types namespaces xsd wsdl share


【解决方案1】:

这是可能的。这就是我会做的,基于我对你所指的东西的了解程度。

首先,我将从您描述的页面中抓取并下载所有 WSDL/XSD 引用,以找出通用集(哪些服务/版本共享哪些 XSD)。加载它们后,这是我可以看到的群体(鲑鱼颜色是 WSDL,灰色是 XSD)。

所以,您有 5 个主要群体。显然,绑定到同一组 XSD 的所有 WSDL 都应该在打包方面表现出您正在寻找的类型的共享。

下一步是定义这样的 WSDL:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- WSDL 1.1 generated by QTAssistant (http://www.paschidev.com) -->
<definitions name="aggregate" targetNamespace="urn:tempuri-org"  xmlns="http://schemas.xmlsoap.org/wsdl/">
    <import namespace="http://www.ans.gov.br/tiss/ws/tipos/tissLoteGuias/v20202" location="tissLoteGuiasV2_02_02.wsdl"/>
    <import namespace="http://www.ans.gov.br/tiss/ws/tipos/tissSolicitacaoStatusProtocolo/v20202" location="tissSolicitacaoStatusProtocoloV2_02_02.wsdl"/>
</definitions>

注意:如果用于定位的相对 URI 对您不起作用,请尝试使用绝对 URI(如果您希望在自己的计算机上创建此 WSDL,并像在远程服务器上一样指向 WSDL 位置,则更是如此)服务器)。继续添加您需要的任何 WSDL,我只添加了两个用于说明。

无论如何,一旦完成,启动您的 Visual Studio,并在您的项目中添加对您刚刚创建的这个 new WSDL 的服务引用(正如@JohnSaunders 在他的评论中所说的那样)。确保您首先验证您的 WSDL,以确保您清除了一些东西。

生成的代码现在为您提供常用类型,以便您可以轻松地编排这些服务的调用,方法是将内容从一个传递到另一个,等等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    • 2013-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多