Me he encontrado con un problema al llamar al servicio web en un bus SAP PI desde mi cliente WCF. La operación se define como unidireccional, y el método en mi contrato de operación de proxy está decorado en consecuencia cuando se agrega la referencia de servicio. Sin embargo, el cliente de servicio se pone una excepción cuando se llama a la operación de acuerdo:Problema con el cliente WCF llamando a la operación unidireccional
La operación unidireccional devuelve un mensaje no nulo con la Acción = ''
Usando SoapUI, el método de la El bus se puede llamar con éxito y devuelve un sobre SOAP con un cuerpo vacío. La gente de autobús me dijeron, esto es de acuerdo a las especificaciones SOAP:
(especificaciones de SOAP, capítulo 4.7.9, las operaciones unidireccionales):
Hay diferentes interpretaciones de cómo es ser HTTP utilizado cuando se realizan operaciones de una sola vía.
R2714 Para operaciones unidireccionales, una INSTANCIA NO DEBE devolver una respuesta HTTP que contenga un sobre. Específicamente, la entidad de respuesta HTTP-cuerpo debe estar vacía.
R2750 UN CONSUMIDOR DEBE ignorar un sobre transportado en un mensaje de respuesta HTTP en una operación unidireccional.
R2727 Para las operaciones de un solo sentido, un consumidor no tiene que interpretar un código de estado de respuesta HTTP con éxito (es decir, 2xx) en el sentido de que el mensaje es válida o que el receptor de la procesaría.
Parece que mi cliente WCF no cumple con R2750.
He descubierto que cuando forzo el contrato de operación en el proxy sea IsOneWay = falso, todo funciona.
¿Hay algún problema con la forma en que WCF maneja las operaciones unidireccionales o hago algo incorrecto (más probable)? ¿Hay algo más que deba hacer, simplemente no parece correcto anular el cliente de proxy WCF generado.
Gracias por cualquier sugerencia.
Gran pregunta +1. Yo diría que su lado no cumple con R2714 tampoco. Considere presentar un incidente con Microsoft y dejarnos saber cuál es el resultado. –
Pregunta similar (y más información): http://stackoverflow.com/q/4510484/46039 –
Enlace a la especificación SOAP 4.7.9 Operaciones unidireccionales: http://www.ws-i.org/profiles/basicprofile -1.1.html –