【发布时间】: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。
谢谢。
【问题讨论】:
标签: .net wcf web-services delphi wsdl