Visual studio 为什么VisualStudio生成的WSDL没有指定soap:operation元素(缺少WSDL:binding元素)

Visual studio 为什么VisualStudio生成的WSDL没有指定soap:operation元素(缺少WSDL:binding元素),visual-studio,wcf,soap,wsdl,Visual Studio,Wcf,Soap,Wsdl,背景:我继承了两个由同一个承包商开发的web服务项目 问题:项目的一个WSDL文件加载到SoapUI以生成测试套件,但另一个没有。我认为第二个没有,因为它没有引用“soap:operation”来指定其操作 以下是从WSDL导入到SoapUI的API方法声明: <wsdl:operation name="getDutyPreferences"> <soap:operation soapAction="http://tempuri.org/IRT2015WS_Web/getDut

背景:我继承了两个由同一个承包商开发的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>
<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>

以下是WDSL的声明,它不会导入到SoapUI中:

<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>
<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都是从以下位置下载的:{port}/SERVICE_NAME.svc?WSDL

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

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

根据您的描述,上面一个是WSDL,下一个是单个WSDL。下图显示了WCF提供的两个WSDL:


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

根据您的描述,上面一个是WSDL,下一个是单个WSDL。下图显示了WCF提供的两个WSDL:


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

谢谢您的想法,但是WSDL和单个WSDL文件中都缺少元素。(请参阅问题的更新部分)。谢谢您的想法,但是WSDL和单个WSDL文件中都缺少元素。(见问题的更新部分)。