2010-04-09 18 views
7

Devo creare un servizio che verrà "richiamato" da una terza parte. Di conseguenza, ho bisogno di conformarmi al loro WSDL.Operazioni multiple con soapAction = "" in un contratto di servizio WCF?

Il loro WSDL ha tutte le operazioni definite con soapAction="", quindi il mio servizio deve fare lo stesso. Purtroppo, sto ottenendo l'errore:

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

Nei servizi web ASMX, c'era una modalità in cui non sarebbe stato utilizzato il soapAction, ma il nome dell'elemento richiesta sarebbe usato al posto. C'è un modo per utilizzare WCF non solo per inviare l'elemento request, ma anche per emettere un WSDL senza soapAction?

risposta

11

Questo è possibile in asmx, ma fuori dalla scatola non troverete alcun modo pulito per farlo in WCF perché utilizza l'azione per inviare messaggi alle operazioni.

Penso che l'hack di cui hai bisogno è impostare la tua soapAzione su "*", e quindi scrivere un custom dispatcher.

un potenziale effetto collaterale di questo è una cattiva WSDL, se avete bisogno di esporre un WSDL si dovrà generare/rubarlo e quindi utilizzare il externalMetadataLocation attribute

Problemi correlati