Создание прокси-сервера веб-службы в 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-адрес службы находится в файле в разделе "Связывание"