2008-11-13 8 views
17

Jaki jest najlepszy sposób na pobranie wszystkich plików WSDL ujawnionych przez usługę WCF?Jaki jest najlepszy sposób pobrania wszystkich plików WSDL ujawnionych przez usługę WCF?

Na przykład, plik korzeń WSDL odwołuje następujące inne pliki WSDL:

<xsd:import schemaLocation="http://localhost:80/?xsd=xsd0" namespace="http://tempuri.com"/> 
<xsd:import schemaLocation="http://localhost:80/?xsd=xsd1" namespace="http://tempuri.com"/> 

Idealnie byłoby możliwe zautomatyzować pobieranie tak, że za każdym razem WSDL zmienia byłoby łatwe do dystrybucji plików klienta lub włączyć do dokumentu/SDK.

Odpowiedz

2

Wygląda na to, że Microsoft zapewnia w tym celu Disco.exe.

+0

Przykro mi, że jesteś taki głupi, ale jak go pobrać? –

6

Jeśli jesteś właścicielem usługi, inną interesującą opcją, którą możesz odkryć, jest użycie pliku FlatWSDL behavior autorstwa Christiana Weyera, który zmusi WCF do generowania wszystkiego w jednym dokumencie WSDL, co powinno ułatwić Ci jego dystrybucję.

+0

Doskonały projekt WCFExtras na codepleksie może być również użyty do wygenerowania pojedynczego pliku wsdl. Martwy łatwy w użyciu, znaleźć go tutaj - http://wcfextras.codeplex.com/ – Shuft

30

Tymczasem disco.exe jest uważane przez Microsoft za przestarzałą technologię.

Możesz użyć svcutil.exe /t:metadata, aby osiągnąć ten sam wiek w WCF. Dodatkowe korzyści to obsługa dodatkowych funkcji, np. WS-Policy.

Zapisz schemat z URL:

svcutil /t:metadata http://host/pathtomy.svc?wsdl

Zapisz schemat z zespołu, na przykład w zautomatyzowanej produkcji:

svcutil /t:metadata c:\wcfweb\pathToWcfServiceAssembly.dll

+0

Dzięki Bernard. Przez jakiś czas nie robiłem WCF - masz referencje? Zaznaczę twoją odpowiedź jako zaakceptowaną, jeśli możesz ją podać. –

+0

@ThomasBratt Czy możesz wyjaśnić, co masz na myśli przez odniesienie? –

+0

@Bernard on oznacza łącze do strony MS, która mówi, że tak jest. –

2

Istnieje prosty fragment kodu, który umożliwia pobieranie WSDL oraz wszystkie przynależne pliki XSD do użytku w trybie offline (na przykład do generowania kodu).

Aktualizacja

blog, gdzie został pokazany fragment kodu nie jest już dostępne. Na szczęście Pablo Diez stworzył mały projekt oparty na moim blogu i przesłał go na github. Jest już dostępny tutaj: https://github.com/pablod/xsd-downloader

+0

+1 dla rozwiązania Java. –

+0

Link jest nieaktualny –

+2

Link nie jest nieaktualny - rozwiązanie jest dobre, jeśli pracujesz w Javie. – Jason

Powiązane problemy