Як використовувати файл WSDL для створення послуги WCF (не телефонувати)


100

У мене старий файл WSDL і я хочу створити сервер на основі цього файлу WSDL.

WSDL генерується з ASMX (я думаю, але я не впевнений).

Як я можу цього досягти?


оригінальне запитання, де ОП вважала, що йому потрібно створити клієнта на основі WSDL.

Відповіді:


112

Використовуючи svcutil, ви можете створювати інтерфейси та класи (договори даних) з WSDL.

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

Це створить файл під назвою "your.cs" в C # (або "your.vb" в VB.NET), який містить усі необхідні елементи.

Тепер вам потрібно створити клас "MyService", який буде реалізовувати сервісний інтерфейс (IServiceInterface) - або кілька сервісних інтерфейсів - і це ваш екземпляр сервера.

Тепер клас самостійно ще не допомагає - вам потрібно буде десь розмістити послугу. Вам потрібно створити власний екземпляр ServiceHost, який розміщує службу, налаштувати кінцеві точки тощо - або ви можете розмістити службу в IIS.


Я спробував те ж саме з svcutil, але з помилками не вдалося. Чи є у вас , можливо , є якісь - то пропозиції до моєї проблеми: goo.gl/dlen
Juri

15
"svcutil your.wsdl your.xsd" - це те, що мені було потрібно, щоб моя працювала! Дякую!
Тім Льюїс

3
Ознайомтесь з цією відповіддю щодо інформації щодо завантаження файлів wsdl та xsd у форматі, який сподобається svcutil. stackoverflow.com/questions/286657 / ...
Бретт Widmeier

@marc_s Коли я використовую це зі своїм файлом WSDL, здається, що перейменувати деякі елементи дуже дивним чином, так що запити, що надходять на мій сервер, навіть не будуть прийняті. Це нормально?
Ардж

@Arjun: ні - це звучить так, що вам потрібно зібрати всі відповідні факти та задати питання про Stackoverflow! :-)
marc_s

41

Там є хороші ресурси, якщо ви знаєте, що шукати. Спробуйте "Договір перший" та WCF. або "Перший WSDL" та WCF.

Ось вибір:


3
Кожен, хто дотримується Основного огляду WSDL-першої статті: Візьміть до уваги коментар, про який йдеться ReplyAction="*". Здається, цього потрібно позбутися. Є пояснення з цього коментаря, який дає міркування, але я не читав цього.
dan-gph

30

Використовуйте svcutil.exe з /scкомутатором для генерації договорів WCF. Це створить файл коду, який ви можете додати до свого проекту. Він буде містити всі інтерфейси та типи даних, необхідні для створення вашої послуги. Змініть місце виводу за допомогою /oперемикача, інакше ви можете знайти файл у папці, де ви запустили svcutil.exe. Мова за замовчуванням - це C #, але я думаю (я ніколи цього не пробував) ви повинні мати можливість змінити це за допомогою /l:vb.

svcutil /sc "WSDL file path"

Якщо у вашому WSDL є будь-які підтримуючі файли XSD, передайте їх як аргументи після WSDL.

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

Потім створіть новий клас, який є вашою послугою, та реалізуйте щойно створений інтерфейс контракту.



7

Ви можете використовувати svcutil.exe для створення коду клієнта. Це включало б визначення договору на послуги та будь-яких договорів щодо даних та необхідних договорів про несправності.

Потім просто видаліть код клієнта: класи, які реалізують договори на обслуговування. Потім вам потрібно буде реалізувати їх самостійно, у ваших послугах.


4

Використовуючи інструмент "Додати службну довідку" у Visual Studio, ви можете вставити адресу як:

файл: ///path/to/wsdl/file.wsdl

І завантажиться належним чином.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.