Использование службы данных WSO2 из C#

Я не могу использовать службу данных WSO2 из C#. Я создал службу данных, используя задокументированный способ, а затем могу взаимодействовать с ней из функции «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, он будет работать правильно, пока я не обновлю ссылку на службу. Похоже, проблема в WSDL 1.1, созданном WSO2, поскольку он противоречит стандарту 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>

Есть ли у кого-нибудь советы о том, как заставить это взаимодействовать?


person Jake Vosloo    schedule 09.05.2012    source источник


Ответы (1)


Да, похоже, это ошибка только для операций. На данный момент для потенциальной операции только для ввода вы можете установить флаг «returnRequestStatus» для операции службы данных, чтобы фактически сделать ее операцией ввода-вывода, тогда она просто отправит статическое сообщение об успешном выполнении для успешных вызовов или иначе отправит ошибку SOAP. И WSDL, сгенерированный из операций такого типа, будет соответствовать спецификации.

Здоровья, Анджана.

person Anjana Fernando    schedule 10.05.2012
comment
Спасибо, Анджана, я попробовал ваш совет, но, похоже, это не решило проблему. Я занят установкой eclipse, чтобы проверить, смогу ли я заставить все работать через студию WSO2. - person Jake Vosloo; 14.05.2012