2010-11-14 2 views
8

Мне нужно создать веб-службу (.NET), которая будет использоваться другой системой. Для того чтобы они могли реализовать логику, которая будет использовать мой веб-сервис, мне нужно отправить им файлы wsdl и XSD для моего веб-сервиса.Как сгенерировать XSD-файлы для веб-службы

WSDL-файл не является проблемой, я получу его с страницы .asmx, передав параметр wsdl. Но как я могу создать соответствующие XSD-файлы для моего веб-сервиса? Могу ли я использовать инструмент XSD.exe и передать его .wsdl-файл в качестве параметра, или есть другой способ?

Заранее спасибо.

ответ

10

Вы можете использовать утилиту disco.exe, которая позволяет вам сохранять файлы wsdl и xsd на диске, чтобы эти файлы могли использоваться для создания прокси-сервера клиента без доступа к веб-адресу WSDL.

+0

Мне удалось сгенерировать файлы XSD с помощью этого инструмента, приветствия. – buhtla

+0

Я не могу генерировать xsd с веб-адреса wsdl. – arjun

2

Если вы используете Pro-версию визуальной студии (и выше), при открытии XML-файла вы найдете меню XML с элементом, который будет генерировать XSD из него (Create Schema). Я считаю, что он использует xsd.exe под капотом.

См. MSDN.

+0

Когда я пытаюсь это сделать, я получаю следующую ошибку: «Приведенный экземпляр xml представляет собой схему или содержит встроенную схему. Этот класс не может вывести схему для схемы». – buhtla

+0

@buhtla - видимо, схема уже определена. Посмотрите на XML и посмотрите, ссылается ли он на схему. – Oded

+0

Я пытаюсь создать XSD из файла WSDL. WSDL генерируется автоматически из веб-службы, созданной в Visual Studio - поэтому eather Web Service генерирует недопустимый XML (что я сомневаюсь), или есть какая-то другая причина для этой ошибки, которую я получаю. – buhtla

0

Вы можете добавить «? Xsd = 1» в конце URL-адреса службы, чтобы получить схему.

т.е. если ваш URL веб-служба : // my_ws_service: 9080/сервис/имя , то вы можете получить WSDL с помощью : // my_ws_service: 9080/сервис/имя WSDL и вы можете получить схему с помощью : // my_ws_service: 9080/service/name? xsd = 1 (примечание xsd чувствительно к регистру)

Надеюсь, что это поможет.

0

Думаю, что я поделился своим решением, в моем случае мне нужно было создать реальный класс C#, чтобы я мог использовать его для десериализации XML-ответа для данной конечной точки, WSDL которой я сохранил на своем dev-компьютере.

Я открыл строку Visual студии Command и напечатал следующее:

wsdl "name-of-your-file" 

Где имя-вашего-файла имя сохраненного файла WSDL. Запуск команды должен сгенерировать класс C#, который вы затем можете использовать в своем клиентском приложении для десериализации XML SOAP Response для вашей конечной точки.

Надеюсь, это поможет.

Смежные вопросы