как создать веб-сервис из wsdl

Клиент предоставил мне wsdl для создания веб-службы. Но когда я использовал команду wsdl.exe, он сгенерировал class .cs. Я использовал этот class в своем веб-сервисе, и когда я предоставил wsdl клиенту, он не соответствовал их схеме. На самом деле я хочу, чтобы .asmx автоматически генерировался из wsdl, чтобы я мог заполнить веб-метод. Так что это точно соответствует их схеме. Надеюсь, что это имеет смысл.

К сожалению, нет волшебного пулевого решения для того, что вы ищете. Вот что вы можете сделать:

  • создайте class интерфейса с помощью этой команды в окне командной строки Visual Studio:

    wsdl.exe yourFile.wsdl /l:CS /serverInterface
    Используйте VB или CS для вашего языка выбора. Это создаст новый файл .cs или .vb .

  • Создайте новый проект .NET Web Service. Импортируйте существующий файл в свой проект – файл, созданный на шаге выше.

  • В вашем файле .asmx.cs в Code-View измените свой class как таковой:

  public class MyWebService : System.Web.Services.WebService, IMyWsdlInterface { [WebMethod] public string GetSomeString() { //you'll have to write your own business logic return "Hello SOAP World"; } } 

Как насчет использования wsdl /server или wsdl /serverinterface ? Насколько я понимаю свойства командной строки wsdl.exe, это то, что вы ищете.

 - ADVANCED - 

/ сервер

 Server switch has been deprecated. Please use /serverInterface instead. Generate an abstract class for an xml web service implementation using ASP.NET based on the contracts. The default is to generate client proxy classes. 

С другой стороны: почему вы хотите создавать устаревшие технологические решения? Почему бы не создать этот веб-сервис в качестве службы WCF. Это современный и более современный, гораздо более гибкий способ сделать это!

Марк


ОБНОВИТЬ:

Когда я использую wsdl /server в файле WSDL, я wsdl /server этот файл:

 [WebService(Namespace="http://.......")] public abstract partial class OneCrmServiceType : System.Web.Services.WebService { ///  [WebMethod] public abstract void OrderCreated(......); } 

В основном это почти тот же код, который генерируется при добавлении ASMX-файла в ваше решение (в коде за файлом – «yourservice.asmx.cs»). Я не думаю, что вы можете приблизиться к созданию файла ASMX из файла WSDL.

Вы всегда можете добавить «yourservice.asmx» вручную – на самом деле это не очень много:

 <%@ WebService Language="C#" CodeBehind="YourService.asmx.cs" Class="YourServiceNamespace.YourServiceClass" %> 

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

В своем сценарии вы должны разместить файл WSDL на своем веб-сайте где-нибудь, и потребители будут использовать этот URL. Вы должны отключить протокол Documentation в файле web.config, чтобы «? Wsdl» не возвращал WSDL. См. Элемент .

Также обратите внимание на первый абзац этой статьи:

Эта тема относится к унаследованной технологии. Теперь веб-службы XML и клиенты веб-служб XML должны быть созданы с использованием Windows Communication Foundation (WCF) .

Вы можете создавать classы прокси-сервера WS, используя инструмент WSCF (First Services Contract First) от thinktecture.com. Таким образом, вы можете создавать веб-службы из wsdl. Создание asmx’s, возможно, нет, но это легкий бит, не так ли? Этот инструмент блестяще интегрируется в VS2005-8 (новая версия для 2010 / WCF под названием WSCF-blue). Я использовал его для загрузки и всегда считал, что это действительно хорошо.

Это может быть очень поздно в ответе. Но может быть полезно для нуждающихся: как конвертировать WSDL в SVC:

  1. Предполагая, что у вас есть файл .wsdl в местоположении «E: \» для облегчения доступа.
  2. Подготовьте команду для каждого файла .wsdl как: E: \ YourServiceFileName.wsdl
  3. Разрешения: Предполагая, что у вас есть права администратора на выполнение разрешений. Открыть каталог: C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ VC \ bin
  4. Щелкните правой кнопкой мыши на amd64 => Безопасность => Изменить => Добавить пользователя => Все или Текущий пользователь => Разрешить все разрешения => ОК.
  5. Подготовьте команды для каждого файла в текстовом редакторе как: wsdl.exe E: \ YourServiceFileName.wsdl / l: CS / сервер.
  6. Теперь откройте командную строку Visual studio из: C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ Tools \ Shortcuts \ VS2013.
  7. Выполните команду выше.
  8. Перейти в каталог: C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ VC \ bin \ amd64, где должен быть сгенерирован соответствующий файл .CS.

    9. Создайте файл CS для соответствующего местоположения.

  • Ограничение доступа к classу из-за ограничений на требуемую библиотеку rt.jar?
  • Interesting Posts

    Отражение и преломление невозможно без рекурсивного отслеживания лучей?

    Изменение фона экрана входа в Windows 7?

    Почему объекты одного classа имеют доступ к личным данным друг друга?

    Как скопировать содержимое одного canvasа на другой canvas на локальном уровне

    Вызов метода fragmentа из родительской активности

    Ошибка UIActivityViewController на iOS 8 iPads

    Где найти информацию о регистрации scancode для Windows?

    Wix – Как запустить / установить приложение без интерфейса

    Автоматическая конфигурация конфигурации отсутствующего типа или неподдерживаемое отображение?

    Отклонить приглашение на небольшое дисковое пространство (Suspend, Power Off, Continue)

    Как исправить ошибку 404.17 на Win Server 2k8 и IIS7

    Насколько велика строка пользовательского агента?

    Получение «NoSuchMethodError: org.hamcrest.Matcher.describeMismatch» при запуске теста в IntelliJ 10.5

    Как запретить Gson выражать целые числа как float

    Обновление с 32-битного Windows7 до 64-битного WIn7, чтобы соответствовать 64-разрядному процессору

    Давайте будем гением компьютера.