У меня возникла проблема при вызове веб-службы на шине SAP PI от моего клиента WCF. Операция определяется как односторонняя, а метод моего договора с оператором связи оформляется соответствующим образом при добавлении ссылки на службу. Однако клиент службы получает исключение при вызове по эксплуатации:Проблема с клиентом WCF, вызывающим однонаправленную операцию
Операция односторонняя возвращается ненулевое сообщение с Action = «»
Использование SoapUI, методики на шину можно назвать успешно, и она возвращает SOAP-конверт с пустым телом. Шинные люди сказали мне, это по SOAP спецификации:
(SOAP спецификации, глава 4.7.9, Односторонние операции):
Существуют различные интерпретации, как HTTP должен быть используется при выполнении односторонних операций.
R2714 Для односторонних операций ИНСТАНЦИЯ НЕ ДОЛЖНА возвращать ответ HTTP, содержащий конверт. В частности, тело-ответчик HTTP-сообщения должно быть пустым.
R2750 ПОТРЕБИТЕЛЬ ДОЛЖЕН игнорировать конверт, переносимый в ответном сообщении HTTP, в односторонней операции.
R2727 Для однонаправленных операций, потребитель НЕ ДОЛЖЕН интерпретировать успешный ответ HTTP кода статуса (т.е. 2xx) означает сообщение действительно или что приемник будет обрабатывать его.
Таким образом, мой клиент WCF не соответствует R2750.
Я выяснил, что, когда я принуждаю к заключению договора на прокси IsOneWay = false, все работает.
Есть ли что-то не так с тем, как WCF обрабатывает односторонние операции или я делаю что-то неправильно (скорее)? Есть ли что-нибудь еще, что я должен делать, просто не стоит переопределять созданный клиент прокси-сервера WCF.
Спасибо за любые предложения.
Большой вопрос +1. Я бы сказал, что их сторона не соответствует требованиям R2714. Пожалуйста, подумайте о том, чтобы зарегистрировать инцидент с Microsoft и сообщить нам, какой результат. –
Аналогичный вопрос (и больше информации): http://stackoverflow.com/q/4510484/46039 –
Ссылка на спецификацию SOAP 4.7.9 Односторонние операции: http://www.ws-i.org/profiles/basicprofile -1.1.html –