2009-11-06 3 views
0

Je veux préfixer le texte suivant au corps de la réponse d'une opération de WCF:Préfixer texte à un corps de message de réponse WCF

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet href="transform.xslt" type="text/xsl" ?> 

Quelle est la meilleure façon de le faire?

Une exigence supplémentaire est que le nom de fichier XSLT doit être spécifié en utilisant un attribut sur la méthode d'opération.

J'essaye de faire ceci using un IDispatchMesssageInspector, mais je ne sais pas comment avoir accès au MethodInfo pour l'opération de sorte que je puisse lire le nom de fichier de l'attribut.

Répondre

0

En fin de compte que je devais utiliser un MessageEncoder personnalisé avec son propre MessageEncodingBindingElement.

2

Voici comment obtenir la méthode de fonctionnement en cours:

var context = OperationContext.Current; 
string action = context.IncomingMessageHeaders.Action; 
var operation = context.EndpointDispatcher.DispatchRuntime.Operations 
    .First(o => o.Action == action); 
Type hostType = context.Host.Description.ServiceType; 
MethodInfo method = hostType.GetMethod(operation.Name); 
+0

Et le contexte d'opération sera disponible dans IDispatchMessageInspector.BeforeSendReply? – Ries

+0

Cela m'a certainement rapproché, mais je trouve cette action == null. Le seul en-tête présent est l'en-tête To. Cela me donne le Uri qui a été appelé, maintenant j'ai juste besoin d'une carte d'Uri pour Opération ... – Ries

+0

Oui, au moins, c'était disponible quand j'ai testé ce code. –

Questions connexes