Каков наилучший способ загрузки всех файлов WSDL, открытых службой WCF?

Каков наилучший способ загрузки всех файлов WSDL, открытых службой WCF?

Например, корневой файл WSDL ссылается на следующие файлы 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"/>

В идеале можно было бы автоматизировать загрузку, чтобы каждый раз, когда WSDL менялся, было бы легко распределить файлы клиенту или включить в документ/SDK.

Ответ 1

Похоже, Microsoft предоставляет Disco.exe для этого.

Ответ 2

Между тем, disco.exe считается устаревшей технологией Microsoft.

Вы можете использовать svcutil.exe /t:metadata для достижения этого в возрасте WCF. Дополнительные преимущества - поддержка дополнительных функций, например WS-Policy.

Сохранить схему из URL:

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

Сохранить схему из сборки, например, в автоматическом сборке:

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

Ответ 3

Если у вас есть услуга, еще один интересный вариант, который вы можете изучить, - это использование Christian Weyer FlatWSDL поведение, которое заставит WCF генерировать все в один документ WSDL, который должен значительно облегчить вам распространение.

Ответ 4

Существует простой фрагмент кода, который позволяет загружать WSDL и все принадлежащие XSD файлы для использования в автономном режиме (например, для генерации кода).

Обновление

Блог, в котором был показан фрагмент кода, больше не доступен. К счастью, Пабло Диез создал небольшой проект, основанный на моем сообщении в блоге, и загрузил его в github. Он доступен здесь: https://github.com/pablod/xsd-downloader