.net – 不同的WSDL ASMX,WCF Web服务

前端之家收集整理的这篇文章主要介绍了.net – 不同的WSDL ASMX,WCF Web服务前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有asmx web-service,它可以从其他客户端(.NET,Delphi)成功使用.

我尝试来到wcf,并在WCF服务中编写相同的逻辑(basicHttpBinding用于互操作性). (.net客户端消耗正常,但delphi 7无法调用此服务).

我开始研究两种服务(asmx,wcf)之间的差异并检测它们的wsdl是不同的:

WSDL asmx:

  1. <s:element name="Test">
  2.  
  3. <s:complexType>
  4.  
  5. <s:sequence>
  6. <s:element minOccurs="1" maxOccurs="1" name="a" type="s:int"/>
  7. </s:sequence>
  8. </s:complexType>
  9. </s:element>
  10.  
  11. <s:element name="TestResponse">
  12.  
  13. <s:complexType>
  14.  
  15. <s:sequence>
  16. <s:element minOccurs="0" maxOccurs="1" name="TestResult" type="s:string"/>
  17. </s:sequence>
  18. </s:complexType>
  19. </s:element>

wcf的wsdl是相当不同的:

  1. <wsdl:operation name="Test"> <soap:operation soapAction="http://tempuri.org/ISyncer/Test" style="document"/>
  2.  
  3. <wsdl:input> <soap:body use="literal"/> </wsdl:input>
  4.  
  5. <wsdl:output> <soap:body use="literal"/> </wsdl:output>
  6.  
  7. <wsdl:fault name="ServiceFaultExceptionFault"> <soap:fault name="ServiceFaultExceptionFault" use="literal"/> </wsdl:fault> </wsdl:operation>

我认为delphi无法生成正确的代理是一个共鸣.

我可以配置wcf来生成与asmx相同的wsdl.

谢谢.

解决方法

猜你在找的HTML相关文章