Створіть проксі-сервер веб-служби у Visual Studio з файлу WSDL


101

У моїй програмі потрібно поговорити з веб-службою, яка не має онлайн-визначення WSDL. Однак розробники постачали мені файл WSDL.

За допомогою загальнодоступної WSDL Visual Studio може генерувати цей код для мене за допомогою майстра довідкових служб. Але це, здається, не працює без публічного WSDL.

Як створити код для розмови з цією веб-службою за допомогою цього файлу WSDL?

Відповіді:


116

Спробуйте використовувати WSDL.exe, а потім включіть створений файл (.cs) у свій проект.

Запустіть командний рядок Visual Studio (у візуальній студії / інструментах у меню "Пуск") та введіть

>wsdl.exe [path To Your WSDL File]

Це виплюне файл, який ви скопіюєте / перемістіть і включите у свій проект. Цей файл містить клас, який є проксі-сервером для вашого сервісу, Запустіть екземпляр цього класу, і він матиме властивість URL-адреси, яку ви можете встановити під час руху, і купу методів, за якими можна зателефонувати. Він також генерує класи для всіх / будь-яких складних об'єктів, переданих через сервісний інтерфейс.


2
Дякую! І ви можете використовувати параметр / o для шляху експортованого файлу. Наприклад> wsdl.exe example.com/service.wsdl / o: C: \ Users \ X \ Desktop
gkonuralp

2
і необов'язково додавати простір імен вручну, охоплюючи всі класи, щоб запобігти конфлікту з подібними файлами, що генеруються.
Сині хмари

138

Використання WSDL.exe не працювало для мене (дало мені помилку щодо відсутнього типу), але мені вдалося правою кнопкою миші натиснути на мій проект у VS та вибрати «Додати службну довідку». Я ввів шлях до файлу wsdl у полі Адреса та натиснув "Перейти". Здається, що вдалося знайти всі належні типи і додав класи безпосередньо до мого проекту.


3
Зіткнувшись із тим же сценарієм, і ваша пропозиція врятувала мені багато розчарувань і, ймовірно, волосся. Вам заслужено представлений заслужений реп. (Як непрямий результат, ви отримали +100 на всіх сайтах :))
Shadow Wizard is Ear For You

Я спробував це, файл імпортує, але я не можу побачити в своєму коді класи
guiomie

1
Я спробував цей метод за допомогою MSVC 2015, але він відмовився обробляти файл wsdl за допомогою URL-адреси. Тому я використав метод, описаний Ендрю М.
Герман

1
Я спробував це на комп'ютері розробки, який не має дозволу на доступ до веб-сервісу. Незважаючи на те, що файл .wsdl є локальним, він намагався підключити службу, коли натиснув "Перейти". Тому я не зміг додати посилання. Я думаю, що в цій ситуації слід віддати перевагу Ендрю М.. Це добре працювало.
gkonuralp

@jeffaudio im зіткнувся з подібною проблемою Я можу додати посилання на службу для веб-проекту, але за допомогою wsdl.exe я не в змозі генерувати проксі-файл. будь-яка пропозиція .. ???
prakash r

15

Побічна примітка: якщо у вас всі файли локально (не лише файл wsdl, але й файли xsd), ви можете викликати wsdl.exe таким чином:

wsdl.exe [path to your wsdl file] [paths to xsd files imported by wsdl]

Таким чином wsdl.exe може вирішити всі залежності локально і правильно генерувати клас проксі.

Можливо, це заощадить когось деякий час - це вирішує помилку "відсутнього типу", коли сервіс недоступний в Інтернеті.



3

Є Microsoft Doc для створення вашого WCFпроксі з командного рядка.

Ви можете знайти свою локальну копію wsdl.exeв подібному до цього місці: C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools( Докладніше тут )

Зрештою, ваш Commandвигляд повинен виглядати приблизно так:

"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\wsdl.exe"
 /language:CS /n:"My.Namespace" https://www.example.com/service/wsdl

1

збережіть файл на диску, а потім використовуйте як URL-адресу:

file://your_path/your_file.wsdl

Це єдиний, який працював для мене, оскільки потрібний файл потрібно було спочатку завантажити після автентифікації. Дякую!
Кевін Редкліфф

-1

Оскільки справжня Прив'язувальна URL-адреса веб-служби розміщена у файлі, ви можете виконати наступні прості дії з локальної машини:

1) Збережіть файл, наприклад, на локальному комп'ютері:

C:\Documents and Settings\[user]\Desktop\Webservice1.asmx

2) У Visual Studio клацніть правою кнопкою миші на вашому проекті> Оберіть Додати веб-довідку, відкриється діалогове вікно.

3) У поле URL Скопіюйте місце локального файлу над C: \ Документи та налаштування [користувач] \ Настільний \ Webservice1.asmx, Клацніть Далі

4) Тепер ви побачите, що з'являються функції, виберіть своє ім'я для посилання, Клацніть додати посилання

5) Ви закінчили! ви можете почати використовувати його як простір імен у вашій програмі. Не хвилюйтеся, що ви використовували локальний файл, оскільки все-таки справжня URL-адреса служби розміщена у файлі у розділі Прив’язка


2
Це вже було запропоновано в цій існуючій відповіді, чому повторювати?
Shadow Wizard є Ear For You

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