2009-06-03 8 views
22

Ho un vecchio file WSDL e voglio usare WCF per comunicare con il servizio.Come utilizzare un file WSDL per creare un proxy WCF?

Il WSDL viene generato da un ASMX (suppongo ma non sono sicuro).

Quali sarebbero i passaggi necessari per comunicare con esso?

+1

Non dovrebbe importare quale cosa abbia generato il WSDL. – Cheeso

risposta

21

Usa svcutil.exe per creare un proxy WCF per chiamare il servizio. Dettagli here.

+1

Ok, ci provo! C'è un file wsdl.exe in Visual Studio e Windows SDK. L'ho usato per generare una classe proxy, è la stessa di svcutil.exe? Una volta generato il file proxy, come dovrei usare questo proxy? – Raha

+5

Non lo stesso. svcutil.exe è uno strumento che genererà proxy e stub (e altre cose) per WCF. wsdl.exe è simile per ASMX. A partire dal 2006, WCF ha sostituito ASMX come framework di programmazione di servizi Web preferito in .NET. Quindi, ASMX è vecchio, WCF è nuovo. – Cheeso

25

Fare clic con il pulsante destro del mouse sul progetto e selezionare "Aggiungi riferimento servizio". Puntare al WSDL. Clicca "Ok". Questo dovrebbe essere tutto.

enter image description here

+3

Non sono riuscito a trovare un pulsante "sfoglia" - dovevo copiare/incollare il percorso completo del file wsdl in Visual Studio 2010. –

+0

Non mi riferivo a un pulsante "sfoglia". Cosa intendi? –

+3

Oh, quello che volevo dire è che sono abituato alle app che richiedono di inserire un nome di file anche con un pulsante "Sfoglia" o "..." in modo da poter selezionare la posizione. L'interfaccia utente di Visual Studio è un po 'fuorviante in quanto non consente di farlo: è necessario copiare/incollare manualmente la posizione del file wsdl. Semplice come lo è dopo che ne sono venuto a conoscenza, all'inizio era decisamente confuso. –

8

wsdl.exe è il vecchio metodo di servizio Web (1.1) per la creazione di un proxy. La prima cosa da provare è "Aggiungi riferimento servizio" come già accennato. Questo utilizza svcutil.exe per creare il proxy. Se è necessario un maggiore controllo sulla modalità di creazione del proxy, è possibile utilizzare svcutil.exe dalla riga di comando con una varietà di opzioni.

Con ciò detto ... Ho avuto problemi con i wsdls del servizio Web precedenti. In particolare, un vecchio servizio Web AXIS di Apache che contiene operazioni sovraccariche. Si prega di consultare il mio post here per i dettagli completi. (Il mio problema non è ancora risolto. Spero che non si verifichino gli stessi problemi, ma se lo fai e capirli, rispondi alla mia domanda :)

+1

Non esiste il concetto di "sovraccarico" nei servizi Web. Apache avrebbe dovuto saperlo meglio e, si spera, ora lo abbiano imparato. Hanno anche usato cose divertenti come emettere schemi che fanno riferimento a tipi come apachesoap: XmlElement e quindi non definiscono questi tipi. Probabilmente ha funzionato bene se stavi usando il codice Apache per consumare il servizio, ma non altrimenti. –

+0

Grazie per il commento, John. Apparentemente, il WSDL 1.1 consentiva sovraccarichi? (si veda http://webservices.xml.com/pub/a/ws/2003/01/08/randyray.html) Lo stesso servizio che ho citato includeva un gruppo di tipi di errori che svcutil non poteva capire. Ho avuto il tempo di farlo funzionare e solo dopo aver apportato modifiche significative al codice proxy. –