2010-04-09 36 views
7

Necesito crear un servicio que será "llamado" por un tercero. Como resultado, debo cumplir con su WSDL.Operaciones múltiples con soapAction = "" en un contrato de servicio de WCF?

Su WSDL tiene todas las operaciones definidas con soapAction="", por lo que mi servicio necesita hacer lo mismo. Por desgracia, estoy consiguiendo el error:

The operations A and B have the same action(). Every operation must have a unique action value.

En servicios web ASMX, había un modo en el que no se utilizaría el soapAction, pero el nombre del elemento de solicitud se utiliza en su lugar. ¿Hay alguna manera de usar WCF no solo para despachar en el elemento de solicitud, sino también para emitir un WSDL sin soapAction?

Respuesta

11

Esto es posible en asmx, pero al salir de la caja no encontrará una manera clara de hacerlo en WCF porque utiliza la acción para enviar mensajes a las operaciones.

Creo que el truco que necesita es establecer su soapAction en "*", y luego escribir un custom dispatcher.

Un posible efecto secundario de esto es una mala WSDL, si es necesario exponer un WSDL que tendrá que generar/robarlo y luego usar el externalMetadataLocation attribute

Cuestiones relacionadas