У меня есть старый файл 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" в С# (или "your.vb" в VB.NET), который содержит все необходимые элементы.
Теперь вам нужно создать класс "MyService", который будет реализовывать интерфейс службы (IServiceInterface) - или несколько интерфейсов службы - и это ваш экземпляр сервера.
Теперь класс сам по себе пока не помогает - вам нужно будет разместить службу где-нибудь. Вам нужно либо создать свой собственный экземпляр ServiceHost, который размещает службу, настроить конечные точки и т.д. - или вы можете разместить свою службу внутри IIS.
Есть хорошие ресурсы, если вы знаете, что искать. Попробуйте "Первый контракт" и WCF. или "WSDL First" и WCF.
Вот выбор:
Используйте svcutil.exe с ключом /sc
для создания контрактов WCF. Это создаст файл кода, который вы можете добавить в свой проект. Он будет содержать все интерфейсы и типы данных, необходимые для создания вашего сервиса. Измените местоположение вывода с помощью переключателя /o
, или вы можете найти файл в папке, где вы запустили svcutil.exe. Язык по умолчанию - С#, но я думаю (я его никогда не пробовал), вы можете изменить это, используя /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
И он будет правильно загружаться.