Erreur WCF: l’adressage manuel est activé sur cette fabrique, donc tous les messages envoyés doivent être pré-adressés.

J’ai un service WCF hébergé pour lequel j’ai créé une fabrique personnalisée, de sorte que cela fonctionne avec plusieurs en-têtes d’hôte:

///  /// Required for hosting where multiple host headers are present ///  public class MultipleHostServiceFactory : ServiceHostFactory { protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses) { List addresses = new List(); addresses.Add(baseAddresses[0]); return base.CreateServiceHost(serviceType, addresses.ToArray()); } } 

Je suis à peu près sûr que mes fichiers de configuration sont maintenant corrects, à la fois sur le client et sur le serveur ( on peut les voir ici ).

L’erreur que je reçois semble être liée à l’usine:

L’adressage manuel est activé sur cette usine, donc tous les messages envoyés doivent être pré-adressés.

 public ssortingng GetData(int value) { return base.Channel.GetData(value); } 

L’erreur se produit au return base.Channel.GetData(value); ligne return base.Channel.GetData(value); .

J’ai rencontré cette erreur et le problème a été résolu en ajoutant WebHttpBehavior (ligne 2 ci-dessous):

 var factory = new ChannelFactory(new WebHttpBinding(), uri); factory.Endpoint.Behaviors.Add(new WebHttpBehavior()); var proxy = factory.CreateChannel(); 

J’ai ajouté une référence de service comme d’habitude et j’ai obtenu cette erreur. Il s’est avéré que tout ce que je devais faire était de modifier la configuration du client pour utiliser une configuration de noeud final avec un comportement spécifiant webhttp

           

Donc, cela a finalement pris fin!

Brian – merci pour vos conseils à ce sujet. Les liaisons étaient mal alignées avec le client et le serveur, et j’ai fini par utiliser les éléments suivants:

         

… et définir leurs atsortingbuts de liaison de noeud final et de bindingConfiguration en conséquence:

   

Comme il s’agit d’un domaine relativement nouveau pour moi, la simple explication de la raison de ces erreurs me conduit dans la bonne direction :).

Je ne pense pas que cela ait nécessairement quelque chose à voir avec votre usine.

Voir

http://msdn.microsoft.com/en-us/library/system.servicemodel.channels.transportbindingelement.manualaddressing.aspx

ou d’autres parmi les premiers hits de Bing pour “manualaddressing”. Il semble que la liaison utilisée soit incompatible avec une autre partie de la logique de stack / messagerie.

Oui, la réponse de Jason Mardell a également fonctionné pour moi. Ma liaison ne faisait pas référence à un comportement. donc dans la liaison j’ai ajouté: behaviorConfiguration="webhttp"