Comment puis-je créer par programme cette liaison personnalisée?
Nous avons accès à un service web qui utilise soap11... pas de problème, je vais définir la liaison comme:
BasicHttpBinding wsBinding = new BasicHttpBinding(BasicHttpSecurityMode.TransportWithMessageCredential);
Nope. Pas de dés. J'ai donc demandé à l'accueil du service pourquoi nous allons avoir des problèmes d'authentification et il a dit que notre config nécessaire pour avoir cette liaison personnalisée:
<bindings>
<customBinding>
<binding name="lbinding">
<security authenticationMode="UserNameOverTransport"
messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11"
securityHeaderLayout="Strict"
includeTimestamp="false"
requireDerivedKeys="true"
keyEntropyMode="ServerEntropy">
</security>
<textMessageEncoding messageVersion="Soap11" />
<httpsTransport authenticationScheme ="Negotiate" requireClientCertificate ="false" realm =""/>
</binding>
</customBinding>
</bindings>
Seul problème est que nous sommes en train de créer notre liaison par programme, pas via le fichier de configuration. Donc si quelqu'un pouvait me diriger dans la bonne direction en ce qui concerne à changer ma BasicHttpBinding dans un custombinding qui est conforme à l' .valeur de configuration pour autant que je vais leur donner un grand brillante étoile d'or pour la journée.
Vous devez vous connecter pour publier un commentaire.
Résolu!
Voici le code gagnant pour ceux qui sont dans une situation identique.
@D. Forrest déjà trouvé la solution, mais une façon simple de voir quels objets sont impliqués pour une configuration WCF est d'appeler
.Endpoint.Binding.CreateBindingElements()
sur le client proxy que vous utilisez. Vous pouvez le vidage de l'arborescence de l'objet de chaque élément dans la liste renvoyée et de voir comment la liaison est configuré.NetTcpBinding
à une liaison personnalisée au moment de l'exécution, afin d'activer la compression GZIP. De cette façon, je n'ai pas besoin de comprendre comment faire la conversion manuellement, je n'ai pas besoin de coder en dur la liaison nécessaire des éléments.Binding
à laCustomBinding
constructeur et n'ont pas besoin de cette méthode à tous. Aussi documenté ici. Peut-être évident pour les gens qui sont familiers avec WCF, mais peut-être que cela aide certains autres confondre les âmes comme moi: -)Vous pouvez utiliser :