【问题标题】: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
如何在不转换的情况下解决?有可能吗?
【问题讨论】:
标签:
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,以确保您清除了一些东西。
生成的代码现在为您提供常用类型,以便您可以轻松地编排这些服务的调用,方法是将内容从一个传递到另一个,等等。