2011-08-03 2 views
1

Je rencontre des problèmes avec un service WCS WsHttpBinding que je souhaite modifier en NetTcpBinding. Auparavant, j'ai installé le service dans ma machine locale IIS7 et cela fonctionne avec le WsHttpBinding.Modification de la liaison WCF de wsHttp à netTcp

Le proxy pour ce service a un CustomBehavior qui ajoute deux têtes de message avant d'envoyer le message de demande

Lorsque je change la liaison à un NetTcpBinding je reçois l'exception suivante dans mes journaux ..

Exception: System.ServiceModel.ServiceActivationException: Service /ConsignmentService/Consignment.svc cannot be activated due to an exception during compilation. The exception message is: Exception has been thrown by the target of an invocation ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.ServiceModel.MessageHeaderException: There is not a header with the name "ClientID" og namespace 'http://AmphoraExtension/Header' in the message. 
    ved System.ServiceModel.Channels.MessageHeaders.GetHeader[T](String name, String ns, XmlObjectSerializer serializer) 
    ved System.ServiceModel.Channels.MessageHeaders.GetHeader[T](String name, String ns) 

Cela fonctionne très bien avec le wsHttpBinding, mais pas avec NetTcpBinding. Qu'est-ce qui me manque ici?

Répondre

0

Résolu moi-même.

C'était mon mauvais. Une requête a été faite au serveur WCF AVANT la demande réelle avec les paramètres et l'en-tête, ce qui a forcé la classe Service à être instanciée. Et dans le constructeur, il y avait une logique autour des données d'en-tête qui étaient censées être là. J'ai fait une solution de contournement pour cela

1

Je ne suis pas vraiment sûr de la fonction CustomBehaviour, mais je viens de passer exactement le même problème en obtenant un service WCF s'exécutant sur IIS sous netTcp. Consultez ma question ici:

WCF netTcpBinding hosted on IIS7.5 Stops Working

Après beaucoup de bidouillage j'ai fini par répondre à ma propre question, et ont publié une liste de contrôle pour obtenir un service NetTcp en cours d'exécution sur IIS.

Questions connexes