У меня есть старый файл WSDL, и я хочу создать сервер на основе этого файла WSDL.
WSDL генерируется из ASMX (я предполагаю, но не уверен).
Как я могу этого добиться?
исходный вопрос, где OP думал, что ему нужно создать клиента на основе WSDL.
У меня есть старый файл WSDL, и я хочу создать сервер на основе этого файла WSDL.
WSDL генерируется из ASMX (я предполагаю, но не уверен).
Как я могу этого добиться?
исходный вопрос, где OP думал, что ему нужно создать клиента на основе WSDL.
Ответы:
Используя 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.
Есть хорошие ресурсы, если вы знаете, что искать. Попробуйте «сначала контракт» и WCF. или «Сначала WSDL» и WCF.
Вот подборка:
ReplyAction="*"
. Похоже, от этого нужно избавиться. В этом комментарии есть следы объяснений, которые дают рассуждение, но я его не читал.
Используйте 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"
Затем создайте новый класс, который является вашей службой, и реализуйте только что созданный интерфейс контракта.
Вы можете использовать svcutil.exe для генерации клиентского кода. Это будет включать определение контракта на обслуживание и любых требуемых контрактов на данные и контрактов на сбой.
Затем просто удалите клиентский код: классы, реализующие сервисные контракты. Затем вам нужно будет реализовать их самостоятельно в своих сервисах.
Используя инструмент «Добавить ссылку на службу» в Visual Studio, вы можете вставить адрес как:
файл: ///path/to/wsdl/file.wsdl
И он загрузится правильно.