Sto provando a creare un servizio C# in .NET 3.5 che supporti sia SOAP - e mostri WSDL - sia REST.Fare un singolo servizio WCF supporta sia SOAP, REST e WSDL
Il servizio SOAP e la generazione WSDL sono stati abbastanza semplici da utilizzare con le classi ServiceHost
e BasicHttpBinding
. Ha funzionato e il cliente era felice.
Poiché il SOAP chiama tutti i parametri semplici utilizzati, gli sviluppatori client hanno richiesto un'interfaccia REST per alcuni comandi. Così ho cambiato la classe ServiceHost in WebServiceHost
, aggiunto gli attributi WebInvoke
e WebGet
, aggiunto una classe WebHttpBinding
e il bingo - REST e SOAP stavano lavorando entrambi su un servizio. Benissimo, cambia un'interfaccia e sia REST che SOAP hanno le novità.
Ma un problema: il WSDL non viene più generato. Non riuscivo a navigare su http://server/service?wsdl e ottenere il file WSDL. Controllo dei documenti MSDN, sembra essere il comportamento per un valore predefinito WebServiceHost
.
Domanda: è possibile sovrascrivere questo comportamento per ottenere il WSDL? Non ha lo stesso URL di prima - può cambiare - ma ho solo bisogno di avere qualche URL in servizio per ottenere il WSDL per quegli sviluppatori SOAP.
Ciao Jason, mi piacerebbe sapere se stai ancora utilizzando questo approccio e come funziona o non funziona per te. Stai scoprendo che devi duplicare qualsiasi metodo (la logica principale) per supportare entrambi? – schmoopy
Ho appena dovuto creare due endpoint e aggiungere un attributo extra a ciascun comando. –
problema simile con la soluzione. http://social.msdn.microsoft.com/Forums/en/wcf/thread/845d0bbd-52b4-420f-bf06-793d53ef93ba – maciejW