Создание прокси-сервера веб-службы в Visual Studio из файла WSDL

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

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

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

Ответ 1

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

Запустите командную строку Visual Studio (в разделе "Visual studio/tools" в меню "Пуск" ) введите

>wsdl.exe [path To Your WSDL File]

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

Ответ 2

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

Ответ 3

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

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

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

Может быть, он кого-то спасет некоторое время - он решает ошибку "отсутствующего типа", когда услуга недоступна в Интернете.

Ответ 4

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

Ответ 5

Так как истинный URL-адрес привязки для веб-службы находится в файле, вы можете сделать эти простые шаги с вашей локальной машины:

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

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

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

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

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

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