Wystąpił problem podczas wywoływania usługi sieci Web na magistrali SAP PI z mojego klienta WCF. Operację definiuje się jako jednokierunkową, a metoda na mojej umowie o obsługę proxy jest odpowiednio dekorowana po dodaniu odwołania do usługi. Jednakże klient usługa dostaje wyjątek podczas wywoływania operacji według:Problem z wywoływaniem klienta WCF w trybie jednokierunkowym
Operacja jednokierunkowa powrócił niezerowym wiadomość z Action = „”
Korzystanie SoapUI, sposób na magistrala może zostać wywołana pomyślnie i zwraca kopertę SOAP z pustym ciałem. Ludzie autobusowe powiedziano mi, to jest według specyfikacji SOAP:
(specyfikacji SOAP, rozdział 4.7.9, operacje w jedną stronę):
Istnieją różne interpretacje jak HTTP ma być używany podczas wykonywania operacji jednokierunkowych.
R2714 W przypadku operacji jednokierunkowych, INSTANCE NIE MOŻE zwracać odpowiedzi HTTP zawierającej kopertę. W szczególności treść podmiotu odpowiedzi HTTP musi być pusta.
R2750 KONSUMENT MUSI zignorować kopertę przenoszoną w komunikacie odpowiedzi HTTP w operacji jednokierunkowej.
R2727 W przypadku operacji jednokierunkowych, konsument NIE interpretować udanej odpowiedzi kod stanu HTTP (tj 2xx) oznacza wiadomość jest ważna lub że odbiornik będzie je przetwarzać.
Tak wygląda, mój klient WCF nie spełnia R2750.
Dowiedziałem się, że kiedy wymuszam na operatorze kontrakt na proxy, aby być IsOneWay = false, wszystko działa.
Czy jest coś złego w sposobie, w jaki WCF obsługuje operacje jednostronne, czy też coś nie tak (bardziej prawdopodobne)? Czy jest coś jeszcze, co powinienem zrobić, po prostu nie wydaje się właściwe przesłonięcie wygenerowanego klienta proxy WCF.
Dzięki za wszelkie sugestie.
Świetne pytanie +1. Twierdzę, że ich strona nie jest zgodna z R2714. Proszę rozważyć zgłoszenie incydentu z firmą Microsoft i poinformowanie nas o wyniku. –
Podobne pytanie (i więcej informacji): http://stackoverflow.com/q/4510484/46039 –
Link do specyfikacji SOAP 4.7.9 Operacje jednokierunkowe: http://www.ws-i.org/profiles/basicprofile -1.1.html –