Как создать ссылку на службу только с физическим файлом wsdl


124

Я создавал и использовал веб-сервисы в течение многих лет и всегда мог использовать Visual Studio для создания ссылки на сервис от клиента. У меня есть сторонняя служба, с которой мне нужно работать, но они отказываются открывать свою систему безопасности, поэтому я могу увидеть wsdl и сделать ссылку на службу. Это общедоступная служба, поэтому я не вижу необходимости в таком уровне безопасности, но это то, что есть.

Я знаю, что это серьезный вопрос, и мне стыдно задавать его, но как мне создать эквивалентную справочную информацию о сервисе в моем клиенте, когда все, что у меня есть, - это физическая копия wsdl, которую клиент отправил мне по электронной почте? Изменяется web.config, объектный слой над данными SOAP и т. Д. Как и в случае с автоматизированной ссылкой на службу, я просто хочу открыть соединение со службой и начать использовать ее с определенными объектами.

Насколько я могу судить, сторонняя служба - это не WCF, а SOAP. Кстати, я использую VS 2010. Заранее спасибо, Кен


Ответы:


181

Это может быть самый простой способ

  • Щелкните правой кнопкой мыши проект и выберите «Добавить ссылку на службу ...»
  • В поле Адрес: введите физический путь (C: \ test \ project ....) загруженного / измененного файла wsdl.
  • Hit Go

11
Если вы используете «Копировать как путь», снимите кавычки.
O. Jones

При сохранении wsdl для передачи кому-то еще, «просмотр источника» wsdl из веб-службы в Chrome дал мне рабочий wsdl, тогда как IE11 - нет. YMMV.
archangel76

69

Есть два способа сделать это. Вы можете использовать IDE для создания WSDL или сделать это через командную строку.

1. Чтобы создать его через IDE:

На панели обозревателя решений щелкните правой кнопкой мыши проект, в который вы хотите добавить службу:

введите описание изображения здесь

Затем вы можете ввести путь к WSDL вашей службы и нажать go:

введите описание изображения здесь

2. Чтобы создать его через командную строку:

Откройте командную строку VS 2010 (Программы -> Visual Studio 2010 -> Инструменты Visual Studio)
Затем выполните:

WSDL /verbose C:\path\to\wsdl

Затем WSDL.exe выведет файл .cs для вашего использования.

Если у вас есть другие зависимости, полученные с файлом, например xsd, добавьте их в список аргументов:

WSDL /verbose C:\path\to\wsdl C:\path\to\some\xsd C:\path\to\some\xsd

Если вам нужен вывод VB, используйте /language:VBв дополнение к /verbose.


Я получаю сообщение «Невозможно импортировать привязку blah из пространства имен blahURL» и «Невозможно импортировать операцию SomeRequest». Элемент «xxx» отсутствует. Означает ли это, что им нужно предоставить мне еще несколько файлов поддержки, или что их безопасность настолько заблокирована, что я ничего не могу сделать?
kfoster 03

Похоже, что вам не хватает зависимостей. Откройте WSDL и посмотрите вверху. Если вы видите строки, importв которых есть символ, за которым следует schemaLocation, указывающая на путь xsd, вам также понадобятся эти файлы xsd.
Lynn Crumbling

Спасибо за ответ. У меня отличное электронное письмо с клиентом, чтобы узнать, смогу ли я получить необходимый импорт xsd. Это так неприятно, когда все сделано правильно, я просто вставляю URL-адрес в диалоговое окно ServiceReference, нажимаю кнопку и альт! Я нахожусь примерно в трех строчках кода от вызова метода службы. Весь процесс занимает около 5 минут. Но я работал с этим клиентом в течение нескольких недель и ничего не понял, потому что их специалисты по безопасности не открывают доступ к каким-либо определениям сервисов через Интернет.
kfoster 03

Это грубо. В настоящее время я сам жду подключения к vpn для проекта. К счастью, они заранее предоставили мне wsdl и сопутствующие xsd-документы. Значит, вы нашли этот импорт в wsdl?
Lynn Crumbling

Да. Оказывается, для 4 сервисов они дали мне wsdl для 2 из них и xsd для 2 других, поэтому нет полного набора файлов для какой-либо из услуг. Но я, наконец, получил xsd и смог сгенерировать файлы .cs для двух сервисов, остальные 2, я полагаю, последуют. Спасибо.
kfoster 03
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.