不同的 WSDL ASMX、WCF Web 服务

Posted

技术标签:

【中文标题】不同的 WSDL ASMX、WCF Web 服务【英文标题】:Different WSDL ASMX,WCF web-services 【发布时间】:2011-09-03 03:42:40 【问题描述】:

我有 asmx web-service,它被其他客户端(.NET,Delphi)成功使用。

我尝试来到 wcf,并在 WCF 服务中编写相同的逻辑(用于互操作性的基本HttpBinding)。 (.net客户端消费ok,但是delphi 7不能调用这个服务)。

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

WSDL asmx:

<s:element name="Test">

<s:complexType>

<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="a" type="s:int"/>
</s:sequence>
</s:complexType>
</s:element>

<s:element name="TestResponse">

<s:complexType>

<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="TestResult" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>

wcf 的wsdl 比较不同:

<wsdl:operation name="Test"> <soap:operation soapAction="http://tempuri.org/ISyncer/Test" style="document"/>

<wsdl:input> <soap:body use="literal"/> </wsdl:input>

<wsdl:output> <soap:body use="literal"/> </wsdl:output>

<wsdl:fault name="ServiceFaultExceptionFault"> <soap:fault name="ServiceFaultExceptionFault" use="literal"/> </wsdl:fault> </wsdl:operation>

我认为这是 delphi 无法生成正确代理的原因。

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

谢谢。

【问题讨论】:

【参考方案1】:

您必须展平 WSDL。查看http://geekswithblogs.net/EltonStoneman/archive/2008/07/30/flattening-wsdl-from-wcf-services.aspx 和http://wcfextras.codeplex.com/ 获取信息。

【讨论】:

Aravind,现在我有下一个问题:***.com/questions/6173733/…

以上是关于不同的 WSDL ASMX、WCF Web 服务的主要内容,如果未能解决你的问题,请参考以下文章

从 ASMX Web 服务导入 wsdl 时出现 WsdlImporter 错误

创建与现有 WSDL 文件类似的 WSDL 文件

从 WSDL 文件创建 ASMX Web 服务

如何使用 WSDL 文件创建 WCF 代理?

iOS 应用程序的 WCF 或 Web 服务 (.asmx)?

Web 服务——WCF 与 ASMX(“标准”)