- clienti per dare WSDL SOAP di Web-service in fase di esecuzione cioè scegliere il file WSDL da un percorso di condivisione di file.
- Consuma il WSDL e chiama il metodo scelto dal Cliente sull'interfaccia utente e gestisce la risposta.
Non riesco a utilizzare MetadataExchangeClient poiché il WSDL non sarà ospitato.
Implementazione:
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();
Blocchi stradali:
- Il codice di cui sopra non ha potuto estrarre i endpoint del servizio a tutti. Quindi, ho dovuto creare manualmente un endpoint del servizio.
- non ho potuto elencare tutti i metodi contenuti nel WSDL sopra e suoi ingressi associati/uscite nella fase (da utilizzare nella operationName variabile e operationParameters sotto)
object retVal = instance.GetType().GetMethod(operationName) .Invoke(instance, operationParameters); // Invoke
Ho provato codificando a fondo il nome dell'operazione, analizzato manualmente dal WSDL, ma poi non è riuscito con i parametri. E 'in attesa di un tipo complesso che contiene la gerarchia, come di seguito:
ContactInput -> ListOfContacts -> Contatti -> nome, cognome
Passi successivi:
se qualcuno potesse aiutami a sistemare i posti di blocco, poi posso procedere con l'approccio di cui sopra.
Else, devo avviare la ricerca sull'uso della svcutil.exe in fase di esecuzione
Grazie, Dev
Grazie per i puntatori. Lo proveremo e aggiorneremo se funziona per me. – Dev