Создайте прокси веб-службы в Visual Studio из файла WSDL - PullRequest
99 голосов
/ 29 ноября 2010

Мое приложение должно общаться с веб-сервисом, который не имеет определения WSDL онлайн.Однако разработчики предоставили мне файл WSDL.

С общедоступным WSDL Visual Studio может сгенерировать этот код для меня с помощью мастера Service Reference.Но, похоже, он не работает без общедоступного WSDL.

Как мне сгенерировать код для общения с этим веб-сервисом, используя этот файл WSDL?

Ответы [ 7 ]

132 голосов
/ 16 января 2013

Использование WSDL.exe у меня не сработало (выдало ошибку об отсутствующем типе), но я смог щелкнуть правой кнопкой мыши по моему проекту в VS и выбрать «Добавить ссылку на службу».Я ввел путь к файлу wsdl в поле адреса и нажал «Перейти».Казалось, что он смог найти все нужные типы и добавил классы прямо в мой проект.

110 голосов
/ 29 ноября 2010

Попробуйте использовать WSDL.exe , а затем включите сгенерированный файл (.cs) в ваш проект.

Запустите командную строку Visual Studio (в меню Visual Studio / Tools в меню «Пуск») и введите

>wsdl.exe [path To Your WSDL File]

Это выплюнет файл, который вы скопируете / переместите и включите в свой проект. Этот файл содержит класс, который является прокси для вашего сервиса, запускает экземпляр этого класса, и у него будет свойство URL, которое вы можете установить на лету, и набор методов, которые вы можете вызвать. Он также будет генерировать классы для всех / любых сложных объектов, передаваемых через интерфейс службы.

13 голосов
/ 23 ноября 2013

Примечание: если у вас есть все файлов локально (не только файл wsdl, но и файлы xsd), вы можете вызвать wsdl.exe следующим образом:

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

Таким образом, wsdl.exe может локально разрешать все зависимости и правильно генерировать прокси-класс.

Может быть, это сэкономит кому-то время - устранит ошибку «отсутствует тип», когда служба недоступна в сети.

3 голосов
/ 29 ноября 2010

Попробуйте инструмент класса WSDL To Proxy , поставляемый с .NET Framework SDK. Я никогда не использовал его раньше, но он, безусловно, выглядит так, как вам нужно.

1 голос
/ 01 июня 2018

Существует 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
0 голосов
/ 13 августа 2018

сохраните файл на своем диске, а затем используйте следующий URL-адрес:

file://your_path/your_file.wsdl
0 голосов
/ 13 марта 2013

Поскольку в файле находится истинный Binding URL для веб-службы, вы можете выполнить следующие простые действия на локальном компьютере:

1) Сохраните файл на локальном компьютере, например:

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

2) В Visual Studio щелкните правой кнопкой мыши свой проект> выберите «Добавить веб-ссылку», откроется диалоговое окно.

3) В поле «URL» скопируйте расположение локального файла над C: \ Documents and Settings [пользователь] \ Desktop \ Webservice1.asmx, нажмите «Далее»

4) Теперь вы увидите функциивыберите имя для ссылки, нажмите добавить ссылку

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

...