Как использовать файл WSDL для создания службы WCF (не звонить)

У меня есть старый файл WSDL, и я хочу создать сервер на основе этого файла WSDL.

WSDL генерируется из ASMX (я полагаю, но не уверен).

Как я могу этого добиться?


исходный вопрос, где OP думал ему нужно было создать клиента на основе WSDL.


person Raha    schedule 04.06.2009    source источник


Ответы (5)


Используя svcutil, вы можете создавать интерфейсы и классы (контракты данных) из WSDL.

svcutil your.wsdl (or svcutil your.wsdl /l:vb if you want Visual Basic)

Это создаст файл с именем your.cs в C # (или your.vb в VB.NET), который содержит все необходимые элементы.

Теперь вам нужно создать класс MyService, который будет реализовывать интерфейс службы (IServiceInterface) или несколько интерфейсов службы, и это будет ваш экземпляр сервера.

Сам по себе класс еще не помогает - вам нужно где-то разместить службу. Вам нужно либо создать свой собственный экземпляр ServiceHost, на котором размещается служба, настроить конечные точки и т. Д., Либо вы можете разместить свою службу внутри IIS.

person marc_s    schedule 04.06.2009
comment
Я пробовал то же самое с svcutil, но у меня не получалось с ошибками. Может быть, у вас есть предложения по моей проблеме: goo.gl/dlen - person Juri; 19.03.2010
comment
svcutil your.wsdl your.xsd - это то, что мне нужно для работы моей! Благодарность! - person Tim Lewis; 25.01.2012
comment
Ознакомьтесь с этим SO-ответом для получения информации о загрузке wsdl и xsd в формате, который понравится svcutil. stackoverflow.com/questions/286657/ - person Brett Widmeier; 19.06.2012
comment
@marc_s Когда я использую это с моим файлом WSDL, кажется, что некоторые элементы переименовываются очень странным образом, так что запросы, поступающие на мой сервер, даже не принимаются. Это нормально? - person Arj; 29.01.2016
comment
@Arjun: нет - похоже, вам нужно собрать воедино все относящиеся к делу факты и задать вопрос в Stackoverflow! :-) - person marc_s; 29.01.2016
comment
@marc_s Вот мой вопрос - просмотров мало, отсюда и отчаяние! stackoverflow.com/questions/35062506 / - person Arj; 29.01.2016

Есть хорошие ресурсы, если вы знаете, что искать. Попробуйте «сначала контракт» и WCF. или «Сначала WSDL» и WCF.

Вот подборка:

person Cheeso    schedule 04.06.2009
comment
Всем, кто следит за статьей Базовый обзор WSDL-First: обратите внимание на комментарий, в котором говорится о ReplyAction="*". Похоже, от этого нужно избавиться. В этом комментарии есть следы объяснений, которые дают рассуждение, но я его не читал. - person dan-gph; 06.04.2010
comment
Ссылки сейчас мертвы - person K0D4; 21.09.2020

Используйте svcutil.exe с переключателем /sc для создания контрактов WCF. Это создаст файл кода, который вы можете добавить в свой проект. Он будет содержать все интерфейсы и типы данных, необходимые для создания вашего сервиса. Измените расположение вывода, используя переключатель /o, или вы можете найти файл в папке, в которой вы запустили svcutil.exe. По умолчанию используется язык C #, но я думаю (никогда не пробовал) вы можете изменить это с помощью /l:vb.

svcutil /sc "WSDL file path"

Если ваш WSDL имеет какие-либо поддерживающие файлы XSD, передайте их в качестве аргументов после WSDL.

svcutil /sc "WSDL file path" "XSD 1 file path" "XSD 2 file path" ... "XSD n file path"

Затем создайте новый класс, который является вашей службой, и реализуйте только что созданный интерфейс контракта.

person Dennis Calla    schedule 17.11.2010
comment
См. Также: MSDN о том, как реализовать чужой WSDL - person sq33G; 14.11.2016

Вы можете использовать svcutil.exe для генерации клиентского кода. Это может включать определение контракта на обслуживание и любых требуемых контрактов на данные и контрактов на неисправность.

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

person John Saunders    schedule 04.06.2009

Используя инструмент «Добавить ссылку на службу» в Visual Studio, вы можете вставить адрес как:

файл: ///path/to/wsdl/file.wsdl

И он загрузится правильно.

person Vagner Gon    schedule 08.08.2017