Creare il proxy del servizio Web in Visual Studio da un file WSDL

La mia applicazione deve parlare con un servizio web che non ha una definizione WSDL online. Gli sviluppatori tuttavia mi hanno fornito un file WSDL.

Con un Visual Studio WSDL pubblico è ansible generare questo codice per me utilizzando la procedura guidata di riferimento del servizio. Ma non sembra funzionare senza un WSDL pubblico.

Come posso generare il codice per parlare con questo servizio Web utilizzando questo file WSDL?

Prova a utilizzare WSDL.exe e quindi includi il file generato (.cs) nel tuo progetto.

Aprire il prompt dei comandi di Visual Studio (sotto Visual Studio / Tools nel menu Start) quindi digitare

>wsdl.exe [path To Your WSDL File] 

Questo sputerà un file, che copi / muovi e includi nel tuo progetto. Quel file contiene una class che è un proxy per il tuo sevice, triggers un’istanza di quella class, e avrà una proprietà URL che puoi impostare al volo e una serie di metodi che puoi chiamare. Genera anche classi per tutti / tutti gli oggetti complessi passati attraverso l’interfaccia di servizio.

Utilizzo di WSDL.exe non ha funzionato per me (mi ha dato un errore su un tipo mancante), ma sono stato in grado di fare clic destro sul mio progetto in VS e selezionare “Aggiungi riferimento servizio”. Ho inserito il percorso del file wsdl nel campo Indirizzo e ho premuto “Vai”. Sembrava in grado di trovare tutti i tipi appropriati e ha aggiunto le lezioni direttamente al mio progetto.

Nota a margine: se hai tutti i file localmente (non solo il file wsdl ma anche i file xsd) puoi invocare wsdl.exe in questo modo:

 wsdl.exe [path to your wsdl file] [paths to xsd files imported by wsdl] 

In questo modo wsdl.exe può risolvere tutte le dipendenze localmente e genera correttamente la class proxy.

Forse salverà qualcuno un po ‘di tempo – risolve l’errore “tipo mancante” quando il servizio non è disponibile online.

Prova lo strumento di class WSDL To Proxy fornito con .NET Framework SDK. Non l’ho mai usato prima, ma certamente sembra quello di cui hai bisogno.

C’è un documento Microsoft per creare il tuo proxy WCF dalla riga di comando.

È ansible trovare la copia locale di wsdl.exe in una posizione simile a questa: C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools ( Ulteriori informazioni qui )

Alla fine il tuo Command dovrebbe assomigliare a questo:

 "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\wsdl.exe" /language:CS /n:"My.Namespace" https://www.example.com/service/wsdl 

salva il file sul tuo disco e poi usa il seguente come URL:

 file://your_path/your_file.wsdl 

Poiché il vero URL di binding per il servizio Web si trova nel file, puoi eseguire questi semplici passaggi dal tuo computer locale:

1) Salva il file sul tuo computer locale per esempio:

 C:\Documents and Settings\[user]\Desktop\Webservice1.asmx 

2) In Visual Studio Fare clic con il tasto destro sul progetto> Scegli Aggiungi riferimento Web, Si aprirà una finestra di dialogo.

3) Nella casella URL Copia il percorso del file locale sopra C: \ Documents and Settings [utente] \ Desktop \ Webservice1.asmx, fai clic su Avanti

4) Ora vedrai apparire le funzioni, scegli il tuo nome per il riferimento, clicca aggiungi riferimento

5) Hai finito! puoi iniziare a usarlo come spazio dei nomi nella tua applicazione, non preoccuparti di aver usato un file locale, perché comunque l’URL vero per il servizio si trova nel file nella sezione Binding