WCF - comment créer par programmation personnalisée de liaison avec le codage binaire sur HTTP(S)

Je voudrais convertir mon HTTP/HTTPS WCF paramètres de liaison à utiliser binaire de codage de message et j'ai besoin de faire dans le code - pas de configuration XML. Autant que je sache, il est nécessaire de créer CustomBinding objet et régler correctement les BindingElements, mais je ne suis pas en mesure de comprendre à quels éléments devrais-je utiliser dans mon scénario.

Principaux points dans ma configuration WCF sont:

  • utiliser le protocole HTTP ou HTTPS transport en fonction de la configuration (dans l'app.config)
  • utiliser nom d'utilisateur message de sécurité
  • todo: ajouter un codage binaire à la place de texte par défaut

Mon code actuel pour le réglage de la liaison (travail, mais sans le codage binaire):

var isHttps = Settings.Default.wcfServiceBaseAddress.StartsWith("https://", StringComparison.InvariantCultureIgnoreCase);
var binding = new WSHttpBinding(isHttps ? SecurityMode.TransportWithMessageCredential : SecurityMode.Message);
binding.Security.Message.ClientCredentialType = MessageCredentialType.UserName;

J'ai essayé ce code mais il ne fonctionne pas - je ne sais pas comment faire pour activer la fonction de message de sécurité de l'élément identifiant de message de sécurité:

var custBinding = new CustomBinding();
custBinding.Elements.Add(new BinaryMessageEncodingBindingElement());
//Transport Security (Not Required)
if (isHttps)
{
    custBinding.Elements.Add(SecurityBindingElement.CreateUserNameForSslBindingElement());
}
//Transport (Required)
custBinding.Elements.Add(isHttps ?
    new HttpsTransportBindingElement() :
    new HttpTransportBindingElement());

Quelqu'un sait comment configurer cela? J'ai essayé de chercher pour le même problème/solution, mais n'a pas réussi...

OriginalL'auteur Buthrakaur | 2010-02-10