2010-11-14 19 views
8

Devo creare un servizio Web (.NET) che verrà utilizzato da un altro sistema. Per poter implementare la logica che utilizzerà il mio servizio web, devo inviare loro file wsdl e XSD per il mio servizio web.Come generare file XSD per il servizio Web

Il file WSDL non è un problema, lo otterrò dalla pagina .asmx passando il parametro wsdl. Ma come posso generare file XSD appropriati per il mio servizio web? Posso usare lo strumento XSD.exe e passare il file .wsdl come parametro, o c'è un altro modo?

Grazie in anticipo.

risposta

10

È possibile utilizzare l'utilità disco.exe che consente di salvare i file wsdl e xsd sul disco in modo che tali file possano essere utilizzati per generare un proxy client senza accedere all'indirizzo Web WSDL.

+0

Sono riuscito a generare file XSD con questo strumento, evviva. – buhtla

+0

Non riesco a generare xsd dall'indirizzo Web di wsdl. – arjun

2

Se si utilizza la versione Pro di Visual Studio (e sopra), quando si apre un file XML si troverà un menu XML, con un oggetto che genererà un XSD da esso (Crea schema). Credo che usi il xsd.exe sotto il cofano però.

Vedere MSDN.

+0

Quando provo questo viene visualizzato l'errore seguente: "L'istanza xml fornita è uno schema o contiene uno schema inline.Questa classe non può dedurre uno schema per uno schema." – buhtla

+0

@buhtla - a quanto pare, uno schema è già definito. Guarda l'XML e vedi se si collega a uno schema. – Oded

+0

Sto provando a generare XSD dal file WSDL. WSDL viene generato automaticamente dal servizio Web che ho creato in Visual Studio: un servizio Web in così modo genera XML non valido (di cui dubito) oppure esiste qualche altra ragione per questo errore. – buhtla

0

È possibile aggiungere "? Xsd = 1" alla fine dell'URL del servizio per ottenere lo schema.

cioè se l'URL servizio Web è : // my_ws_service: 9080/servizio/nome allora si può ottenere usando WSDL : // my_ws_service: 9080/servizio/nome WSDL e si può ottenere utilizzando lo schema : // my_ws_service: 9080/service/name? xsd = 1 (nota xsd fa distinzione tra maiuscole e minuscole)

Spero che sia d'aiuto.

0

Pensavo di condividere la mia soluzione, nel mio caso avevo bisogno di creare una classe C# effettiva in modo da poterla usare per deserializzare la risposta XML per un dato endpoint il cui WSDL avevo salvato sul mio PC di sviluppo.

ho aperto visivo Studio Command Prompt e digitare la seguente:

wsdl "name-of-your-file" 

Dove il nome-del-tuo-file è il nome del file WSDL salvato. L'esecuzione del comando dovrebbe generare una classe C# che è possibile utilizzare nell'applicazione client per deserializzare una risposta SOAP XML per l'endpoint specificato.

Spero che questo aiuti.

Problemi correlati