2009-09-03 6 views
0

J'ai construit un service avec un sélecteur d'opération personnalisé, le sélecteur regarde simplement un élément spécifique dans le corps du message (et ignore l'action) pour spécifier quelle méthode appeler sur un contrat.IDispatchOperationSelector question

Cela fonctionne très bien, et je peux voir que le code du serveur est invoqué maintenant, mais le client lève une exception disant que l'action de la requête ne répond pas à l'action de la réponse.

quel point extensible me aiderait à modifier l'en-tête d'action de réponse, ou puis-je faire quelque chose au client d'accepter l'action a changé ...

merci beaucoup

+0

Il peut être utile de fournir plus d'informations sur les exceptions (type et trace de pile); Je peux imaginer, par exemple un canal de protocole comme la sécurité joue un rôle ici ... – Brian

Répondre

1

J'ai fini par définir ReplyAction = "*" de OperationContractAttribute, de sorte que l'action du message soit définie à rien, ainsi le client ne sera pas confus quand je permuterai les opérations sur le serveur.

1

Vous pouvez essayer d'utiliser l'ajout une implémentation IDispatchMessageInspector et modifiez l'action sur le message sortant dans la méthode BeforeSendReply(). En fonction de ce que vous faites exactement dans votre IDispatchOperationSelector, il peut être possible de s'en débarrasser et de tout faire à l'intérieur de l'inspecteur de messages.