Проблема с клиентом WCF, называющим одностороннюю операцию

Я столкнулся с проблемой при вызове веб-сервиса на шине PI SAP от моего клиента WCF. Операция определяется как односторонняя, и метод по моему контракту на операцию прокси украшен соответственно, когда сервисная ссылка добавляется. Однако сервисный клиент получает исключение при вызове согласно операции:

Односторонняя операция возвратила непустое сообщение с Действием = ''

Используя SoapUI, метод на шине можно назвать успешно, и это возвращает конверт SOAP с пустым телом. Люди шины сказали мне, это согласно спецификациям SOAP:


(Спецификации SOAP, глава 4.7.9, Односторонние операции):

Там отличаются интерпретации того, как HTTP должен использоваться при выполнении односторонних операций.

R2714 Для односторонних операций, ЭКЗЕМПЛЯР НЕ ДОЛЖЕН возвращать ответ HTTP, который содержит конверт. А именно, тело объекта ответа HTTP должно быть пустым.

R2750 ПОТРЕБИТЕЛЬ ДОЛЖЕН проигнорировать конверт, который несут в ответном сообщении HTTP в односторонней операции.

R2727 Для односторонних операций, ПОТРЕБИТЕЛЬ НЕ ДОЛЖЕН интерпретировать успешный Код состояния ответа HTTP (т.е. 2xx), чтобы означать, что сообщение действительно или что получатель обработал бы его.


Таким образом, это кажется, мой клиент WCF не выполняет R2750.

Я узнал, что, когда я вынуждаю контракт на операцию на прокси быть IsOneWay = ложь, все работает.

Есть ли что-то не так со способом, которым WCF обрабатывает один путь операции, или я делаю что-то не так (более вероятно)? Есть ли что-либо еще, что я должен сделать, это просто не кажется правильным для переопределения сгенерированного клиента прокси WCF.

Спасибо за любые предложения.

21
задан kay.herzam 13 March 2009 в 15:28
поделиться