Come utilizzare un file WSDL per creare un servizio WCF (non effettuare una chiamata)


100

Ho un vecchio file WSDL e desidero creare un server basato su questo file WSDL.

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

Come posso raggiungere questo obiettivo ?


domanda originale in cui l'OP pensava di dover creare un client basato sul WSDL.

Risposte:


112

Utilizzando svcutil, è possibile creare interfacce e classi (contratti dati) dal WSDL.

svcutil your.wsdl (or svcutil your.wsdl /l:vb if you want Visual Basic)

Questo creerà un file chiamato "your.cs" in C # (o "your.vb" in VB.NET) che contiene tutti gli elementi necessari.

Ora, è necessario creare una classe "MyService" che implementerà l'interfaccia del servizio (IServiceInterface) - o le diverse interfacce del servizio - e questa è l'istanza del server.

Ora una lezione da sola non aiuta ancora: dovrai ospitare il servizio da qualche parte. È necessario creare la propria istanza ServiceHost che ospita il servizio, configurare gli endpoint e così via oppure è possibile ospitare il servizio all'interno di IIS.


Ho provato lo stesso con svcutil, ma non ho avuto successo con i difetti. Hai forse qualche suggerimento per il mio problema: goo.gl/dlen
Juri

15
"svcutil your.wsdl your.xsd" è ciò di cui avevo bisogno perché il mio funzionasse! Grazie!
Tim Lewis

3
Dai un'occhiata a questa risposta SO per informazioni sul download di wsdl e xsd in un formato che piacerà a svcutil. stackoverflow.com/questions/286657/...
Brett Widmeier

@marc_s Quando lo uso con il mio file WSDL, sembra che alcuni elementi vengano rinominati in un modo molto strano, in modo tale che le richieste in arrivo al mio server non sarebbero nemmeno accettate. È normale?
Arj

@ Arjun: no - sembra che tu debba mettere insieme tutti i fatti rilevanti e fare una domanda su Stackoverflow! :-)
marc_s

41

Ci sono buone risorse là fuori se sai cosa cercare. Prova "Primo contratto" e WCF. o "WSDL First" e WCF.

Eccone una selezione:


3
A chiunque segua la panoramica di base dell'articolo WSDL-First : prendi nota del commento di cui parla ReplyAction="*". Sembra che tu debba sbarazzartene. C'è una scia di spiegazioni da quel commento che fornisce il ragionamento, ma non l'ho letto.
dan-gph

30

Utilizzare svcutil.exe con l' /scopzione per generare i contratti WCF. Questo creerà un file di codice che puoi aggiungere al tuo progetto. Conterrà tutte le interfacce e i tipi di dati necessari per creare il servizio. Modificare la posizione di output utilizzando l' /ointerruttore oppure è possibile trovare il file nella cartella in cui è stato eseguito svcutil.exe. La lingua predefinita è C # ma penso (non l'ho mai provata) dovresti essere in grado di cambiarla usando /l:vb.

svcutil /sc "WSDL file path"

Se il tuo WSDL ha file XSD di supporto, passali come argomenti dopo WSDL.

svcutil /sc "WSDL file path" "XSD 1 file path" "XSD 2 file path" ... "XSD n file path"

Quindi crea una nuova classe che sia il tuo servizio e implementa l'interfaccia del contratto che hai appena creato.



7

È possibile utilizzare svcutil.exe per generare il codice client. Ciò includerebbe la definizione del contratto di servizio e di eventuali contratti dati e contratti di guasto richiesti.

Quindi, elimina semplicemente il codice client: classi che implementano i contratti di servizio. Dovrai quindi implementarli tu stesso, al tuo servizio.


4

Utilizzando lo strumento "Aggiungi riferimento al servizio" in Visual Studio, puoi inserire l'indirizzo come:

file: ///path/to/wsdl/file.wsdl

E verrà caricato correttamente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.