как создать веб-сервис из wsdl
Клиент предоставил мне wsdl для создания веб-службы. Но когда я использовал команду wsdl.exe, он сгенерировал class .cs. Я использовал этот class в своем веб-сервисе, и когда я предоставил wsdl клиенту, он не соответствовал их схеме. На самом деле я хочу, чтобы .asmx автоматически генерировался из wsdl, чтобы я мог заполнить веб-метод. Так что это точно соответствует их схеме. Надеюсь, что это имеет смысл.
- Как вызвать веб-службу SOAP на Android
- Создание прокси-сервера веб-службы в Visual Studio из файла WSDL
- Как избежать необходимости указывать местоположение WSDL в CXF или JAX-WS, сгенерированном веб-сервисом?
- Должно ли быть выведено URI имени пространства имен XML?
- Клиент службы WSDL / SOAP для Android
- Создание WSDL из файла XSD
- Как использовать WSDL-файл для создания службы WCF (не звонить)
- Как добавить пользовательский заголовок Http для веб-службы C #, использующий веб-службу Axis 1.4
К сожалению, нет волшебного пулевого решения для того, что вы ищете. Вот что вы можете сделать:
-
создайте 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:
- Предполагая, что у вас есть файл .wsdl в местоположении «E: \» для облегчения доступа.
- Подготовьте команду для каждого файла .wsdl как: E: \ YourServiceFileName.wsdl
- Разрешения: Предполагая, что у вас есть права администратора на выполнение разрешений. Открыть каталог: C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ VC \ bin
- Щелкните правой кнопкой мыши на amd64 => Безопасность => Изменить => Добавить пользователя => Все или Текущий пользователь => Разрешить все разрешения => ОК.
- Подготовьте команды для каждого файла в текстовом редакторе как: wsdl.exe E: \ YourServiceFileName.wsdl / l: CS / сервер.
- Теперь откройте командную строку Visual studio из: C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ Tools \ Shortcuts \ VS2013.
- Выполните команду выше.
-
Перейти в каталог: C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ VC \ bin \ amd64, где должен быть сгенерирован соответствующий файл .CS.
9. Создайте файл CS для соответствующего местоположения.