Я не могу использовать службу данных 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>
Есть ли у кого-нибудь советы о том, как заставить это взаимодействовать?