在C#中的多个wsdl引用之间共享类型

时间:2013-03-11 17:11:39

标签: types namespaces xsd wsdl share

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

  • tissCancelaGuia.cabecalhoTransacao
  • tissVerificaElegibilidade.cabecalhoTransacao

如何解决这个问题,以便不转换?有可能吗?

1 个答案:

答案 0 :(得分:4)

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

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

enter image description here

所以,你有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,以确保您清除了所有内容。

enter image description here

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