0

我无法从 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>

有没有人对如何使这个互操作有一些建议?

4

1 回答 1

1

是的,这似乎是仅限于操作的错误。现在,对于您进行的潜在的仅输入操作,您可以为数据服务操作设置标志“returnRequestStatus”以使其实际成为输入输出操作,然后它将简单地发送成功调用的静态成功消息,或者否则将发送 SOAP 错误。并且从这些类型的操作生成的 WSDL 将符合规范。

干杯,安佳娜。

于 2012-05-10T19:47:35.803 回答