2009-11-06 6 views
0

Я хочу предварять следующий текст в теле ответа операции WCF:Предварение некоторый текст в тело сообщения ответа WCF

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

Что такое лучший способ сделать это?

Дополнительным требованием является то, что имя файла XSLT должно быть специфицировано с использованием атрибута метода операции.

Я пытаюсь сделать это с помощью IDispatchMesssageInspector, но я не знаю, как получить доступ к MethodInfo для операции, чтобы я мог прочитать имя файла из атрибута.

ответ

0

В конце концов, я должен был использовать пользовательский MessageEncoder со своим собственным MessageEncodingBindingElement.

2

Вот как получить текущий метод работы:

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

И контекст работы будет доступен в IDispatchMessageInspector.BeforeSendReply? – Ries

+0

Это, безусловно, приблизило меня, но я обнаружил, что действие == null. Единственным заголовком является заголовок To. Это дает мне Uri, который был вызван, теперь мне просто нужна карта Uri для операции ... – Ries

+0

Да, по крайней мере, она была доступна, когда я тестировал этот код. –

Смежные вопросы