Использование и вызов SOAP WebServices во время выполнения - клиент динамической веб-службы из файла WSDL
Требование:
Клиент должен предоставить WSDL веб-службы SOAP во время выполнения, т. Е. Выбрать файл WSDL из общей папки.Использовать WSDL, вызвать метод, выбранный клиентом, в пользовательском интерфейсе и обработать ответ.Я не могу использовать MetadataExchangeClient, поскольку WSDL не будет размещен.
Реализация:
var serviceDescription = ServiceDescription.Read(@"C:\Contacts.WSDL");
var metadataSection = new MetadataSection
{
Dialect = MetadataSection.ServiceDescriptionDialect,
Identifier = serviceDescription.TargetNamespace,
Metadata = serviceDescription
};
var metadataSections = new List<MetadataSection> {metadataSection};
var metadatSet = new MetadataSet(metadataSections);
var wsdlImporter = new WsdlImporter(metadatSet);
var services = wsdlImporter.ImportAllEndpoints();
Дорожные блоки:
Приведенный выше код не может извлечь конечные точки службы вообще. Итак, мне пришлось вручную создать конечную точку службы.Я не мог перечислить все методы, содержащиеся в указанном выше WSDL и связанных с ним входах / выходах в шаге (для использования в переменных operationName и operationParameters ниже)object retVal = instance.GetType().GetMethod(operationName)
.Invoke(instance, operationParameters); // Invoke
Я попытался жестко запрограммировать имя операции, проанализированное вручную из WSDL, но затем не получилось с параметрами. Ожидается сложный тип, содержащий иерархию, как показано ниже:
ContactInput -> Список Контактов -> Контакт -> Имя, Фамилия
Следующие шаги:
Если кто-то может помочь мне исправить контрольно-пропускные пункты, тогда я смогу перейти к вышеуказанному подходу.
Иначе я должен начать исследовать использование svcutil.exe во время выполнения
Спасибо, дев