为什么Visual Studio生成的WSDL没有指定soap:操作元素(缺少wsdl:绑定元素)?

问题描述 投票:1回答:1

背景:我继承了两个网络服务项目,这两个项目由同一个承包商开发。我继承了两个Web服务项目,它们是由同一个承包商开发的。

问题:其中一个项目的WSDL文件可以加载到SoapUI中生成测试套件,但另一个项目却不能。我认为第二个项目不能生成测试套件是因为它在指定操作时没有引用 "soap:operation"。

这里是WSDL中导入SoapUI的API方法的声明。

<wsdl:operation name="getDutyPreferences">
<soap:operation soapAction="http://tempuri.org/IRT2015WS_Web/getDutyPreferences" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>

而这里是WDSL的声明,它不能导入SoapUI。

<wsdl:operation name="Login">
<wsdl:input wsaw:Action="http://tempuri.org/IRT2015WS_Web/Login" message="tns:IRT2015WS_Web_Login_InputMessage"/>
<wsdl:output wsaw:Action="http://tempuri.org/IRT2015WS_Web/LoginResponse" message="tns:IRT2015WS_Web_Login_OutputMessage"/>
</wsdl:operation>

这两个WSDL都是从以下网站下载的 http:/localhost:{端口}SERVICE_NAME.svc?wsdl

有谁知道为什么这些方法有如此不同的声明?

更新我注意到,在工作的 WSDL 文件中,元素(我需要看到的)在元素中:在有问题的文件中,这个元素不见了。 我已经更新了问题标题以反映这一点。

visual-studio wcf soap wsdl
1个回答
0
投票

根据你的描述,上面一个是WSDL,下面一个是单WSDL.下图是WCF提供的两个WSDL。enter image description here

Svcutil可以根据第一个链接生成代理类.当走跨技术的时候,单Wsdl选项是最安全的,比如在Java中,可以使用CXF 3.0的WSDL 2java来生成基于单WSDL的Java包,也可以使用jax-ws来创建连接,它们都可以生成代理类。

© www.soinside.com 2019 - 2024. All rights reserved.