Notre API tierce fournit deux services Web différents, mais possède des méthodes et des modèles identiques. Néanmoins, ils ne diffèrent que sur URIs (Service Web Chemin, Chemin d'action [contrat d'exploitation]Contrat d'exploitation avec une source ou une action différente Url
J'ai donc décidé de:.
Générez le code de leur wsdl en utilisant VS.
Modifier le namespacing à utiliser le même et d'être "commun" et ne pas utiliser la référence de service à la place, j'utilise le code édité Reference.cs
Créer un nouveau proxy qui gérera l'adresse URI correcte du service à utiliser (enveloppé le Refer ence.cs à l'intérieur de celui-ci).
Maintenant, j'ai un problème avec le "Method1", car ils ont un nom d'action différent. Ayant une exception:
"Le serveur ne reconnaît pas la valeur de en-tête HTTP SOAPAction: http://www.api.com/service/Method1"
Je remarque juste que le nom de l'action correcte est: http://www.api.com/service1/Method1
Le question est maintenant, est-il une configuration ou un comportement que je peux utiliser pour corriger le nom de l'action pour chaque méthode pour chaque service? Ou bien, tant qu'ils continuent à ajouter des contrats pour chaque implémentation de l'API, je devrais aussi continuer à ajouter les contrats pour chacun, et utiliser simplement ChannelFactory pour cela?
S'il vous plaît, aidez, merci.
Merci pour cela, il est clair que ChannelFactory est le bon pour ici. Quand vous dites que vous avez utilisé l'une des interfaces enfants, cela signifie-t-il ci-dessous? 'l'interface base' ' l'interface API1: base' 'Interface api2: base' ' 'ChannelFactory ' Est-ce exact? Je me demande juste parce que je finis par utiliser les contrats séparés lors de la création de l'instance du ChannelFactor . –