我无法从 C# 使用 WSO2 数据服务。我使用记录的方式创建了数据服务,然后能够通过“TryIt”功能与之交互。然后我在 Visual Studio 2010 中注册了一个服务引用。我收到的错误是:
The method 'update_RealtyIntroduction_operation' in type 'Realty1.ServiceReference1.RealtyIntroduction_DataServicePortType' is marked IsOneWay=true
and declares one or more FaultContractAttributes. One-way methods cannot declare FaultContractAttributes.
To fix it, change IsOneWay to false or remove the FaultContractAttributes.
如果我通过删除 IsOneWay 或 FaultContractAttributes 来编辑生成的代码,那么它会正常工作,直到我更新服务引用。似乎问题出在 WSO2 生成的 WSDL 1.1 中,因为它违反了 W3C 标准。该标准定义了以下操作:
<wsdl:definitions .... > <wsdl:portType .... > *
<wsdl:operation name="nmtoken">
<wsdl:input name="nmtoken"? message="qname"/>
</wsdl:operation>
</wsdl:portType >
</wsdl:definitions>
http://www.w3.org/TR/wsdl#_one-way
但是 WSO2 正在生成以下内容:
<wsdl:operation name="update_RealtyIntroduction_operation">
<wsdl:documentation />
<wsdl:input wsaw:Action="urn:update_RealtyIntroduction_operation" message="ns0:update_RealtyIntroduction_operationRequest" />
<wsdl:fault wsaw:Action="urn:update_RealtyIntroduction_operationDataServiceFault" name="DataServiceFault" message="ns0:DataServiceFault" />
</wsdl:operation>
有没有人对如何使这个互操作有一些建议?