从C#中使用WSO2数据服务

时间:2012-05-09 18:56:54

标签: wsdl wso2 axis2 wso2dss

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

有没有人对如何实现这种互操作有一些建议?

1 个答案:

答案 0 :(得分:1)

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

干杯, 长香。