Мне нужно использовать веб-службу. Они отправили мне файл WSDL. Что делать, чтобы добавить его на мой сайт и начать использовать его в качестве прокси. (Если я поместил его в виртуальный каталог, он может быть обнаружен, но предоставляет ли он мне связь с реальной веб-службой?)
Как использовать WSDL
Ответ 1
Я бы запустил Visual Studio, создаю веб-проект (или консольное приложение - не имеет значения).
Для стандарта.Net:
- Я бы щелкнул правой кнопкой мыши по проекту и выберите "Добавить ссылку на службу" из контекстного меню " Добавить".
- Я бы нажал кнопку "Дополнительно", затем нажмите "Добавить ссылку на службу".
- Я бы получил полный путь к файлу wsdl и вставить в адресную строку. Затем запустите стрелку (нажмите кнопку).
- Если есть ошибка при попытке загрузить файл, тогда должен быть сломанный и неразрешенный URL-адрес, который должен решить файл, как показано ниже: Обратитесь к этому ответу за информацией о том, как исправить: fooobar.com/questions/9784708/...
Если нет ошибки, вы должны просто установить NameSpace, которое хотите использовать для доступа к службе, и оно будет сгенерировано для вас.
Для.Net Core
- Я бы щелкнул правой кнопкой мыши по проекту и выберите Connected Service из контекстного меню Добавить.
- Я бы выбрал из списка список поставщиков WCF веб-службы Microsoft WCF.
- Я бы сразу нажал кнопку просмотра и сразу же выделил файл wsdl, задал пространство имен, и мне хорошо идти. Если вы столкнулись с какой-либо ошибкой, обратитесь к исправлению ошибки.
Любой из вышеперечисленных методов создаст простой, очень простой клиент WCF для вас. Вы должны найти класс "YourservicenameClient" в сгенерированном коде.
Для справочной цели сгенерированный файл cs можно найти в вашем Obj/debug (или release)/XsdGeneratedCode, и вы все равно можете найти DLL в папке TempPE.
Созданный Сервис должен иметь методы для каждого из определенных методов в контракте WSDL.
Выполните активацию клиента и вызовите методы, которые вы хотите назвать, - все, что есть!
YourServiceClient client = new YourServiceClient();
client.SayHello("World!");
Если вам нужно указать удаленный URL (не используя тот, который был создан по умолчанию), вы можете легко сделать это в конструкторе прокси-клиента:
YourServiceClient client = new YourServiceClient("configName", "remoteURL");
где configName
- это имя используемой конечной точки (вы будете использовать все настройки, кроме URL-адреса), а remoteURL
- это строка, представляющая URL-адрес для подключения (а не тот, который содержится в конфиге).
Ответ 2
В визуальной студии.
- Создайте или откройте проект.
- Щелкните правой кнопкой мыши проект из проводника решений.
- Выберите "Добавить услугу"
- Вставьте адрес с полученным WSDL.
- Нажмите "ОК".
Если ошибок нет, вы должны иметь возможность видеть ссылку на службу в обозревателе объектов и всех связанных методах.
Ответ 3
Используйте утилиту WSDL.EXE для создания прокси-сервера веб-службы из WSDL.
Вы получите длинный исходный файл С#, содержащий класс, который выглядит следующим образом:
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Web.Services.WebServiceBindingAttribute(Name="MyService", Namespace="http://myservice.com/myservice")]
public partial class MyService : System.Web.Services.Protocols.SoapHttpClientProtocol {
...
}
В вашей клиентской части код, потребляющий Web-сервис:
- создать экземпляр MyService.
- установить его свойство Url
- вызывать веб-методы
Ответ 4
Если вы хотите добавить ссылку wsdl в проекте .Net Core, нет опции "Добавить веб-ссылку".
Чтобы добавить ссылку на wsdl, перейдите в Обозреватель решений, щелкните правой кнопкой мыши элемент проекта "Ссылки", а затем выберите " Добавить подключенную службу".
Затем нажмите "Справочная служба Microsoft WCF Web Service":
Введите путь к файлу в текстовое поле URI и импортируйте WSDL:
Он будет генерировать простой, очень простой клиент WCF, и вы будете использовать его примерно так:
YourServiceClient client = new YourServiceClient();
client.DoSomething();