Sie*_*era 5 c# wsdl web-services asmx wsdl.exe
我创建了两个wsdl文件,其中包含从xsd模式文件导入的共享类型.
之后,我使用带有参数/ serverInterface的wsdl.exe工具生成的界面创建了Web服务.
第一个Web服务,通过系统"A"将Web方法"RegisterData"放入队列中一些复杂的对象进行处理.由于此方法返回布尔值(告诉我们对象已注册成功).
第二个Web服务,具有Web方法"UpdateData"以基于该相同对象更新系统"B"中的一些数据,并在系统"A"上进行了更改.
因此,在系统"A"中,我必须为第二个Web服务创建客户端,我将使用此修改后的复杂对象us参数调用方法"UpdateData".
但是,当我在Visual Studio中创建此客户端时(通过添加Web引用或添加服务引用),我必须为客户端创建一些命名空间.然后,当我试图调用"UpdateData"时,agument对于从第一个Web服务"RegisterData"方法接收的同一个对象具有不同的命名空间.
我想创建第一个Web服务和第二个Web服务客户端,我可以在它们之间使用相同类型的对象.
非常感谢你的帮助.
我不相信ASMX Web服务可以实现这一点.
但是,WCF支持这一点.
WCF链接:
实际上,我想我可能误读了你的问题.我虽然你试图在客户端和服务器之间共享相同的类型.ASMX无法做到这一点.但是,您似乎尝试在两个客户端代理之间共享相同的类型.您可以使用WSDL.EXE工具轻松完成此操作.
考虑一个模式,DataTypes.xsd和两个导入它的WSDL文件,ServiceA.wsdl和ServiceB.wsdl.要创建服务器接口,请使用:
wsdl/serverInterface /n:SharedTypes.Servers /out:Services.cs ServiceA.wsdl ServiceB.wsdl DataTypes.xsd
这将创建您可以实现的接口,以便创建您的服务.这些接口将使用从DataTypes.xsd创建的一组类.要创建代理类,只需使用:
wsdl /n:SharedTypes.Proxies /out:Proxies.cs ServiceA.wsdl ServiceB.wsdl DataTypes.xsd
请注意,您不需要/sharedTypes切换.这有不同的目的.当您需要从服务下载WSDL和任何XSD时,它用于组合外部服务的类型.
我尝试使用像你这样的例子,ServiceA将消息发布到队列中,然后客户端接收该消息并将其发送到ServiceB.它运作得很好.