Добавление некоторого текста в тело сообщения ответа WCF

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

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

Как лучше всего это сделать?

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

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


person Ries    schedule 06.11.2009    source источник


Ответы (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);
person Darin Dimitrov    schedule 06.11.2009
comment
А контекст операции будет доступен в IDispatchMessageInspector.BeforeSendReply? - person Ries; 06.11.2009
comment
Это, безусловно, приблизило меня, но я считаю, что action == null. Единственным присутствующим заголовком является заголовок To. Это дает мне вызванный Ури, теперь мне просто нужна карта Ури до Операции... - person Ries; 06.11.2009
comment
С помощью WebHttpBehaviour2 из REST взял его - person Ries; 06.11.2009

В конце концов мне пришлось использовать собственный MessageEncoder с собственным MessageEncodingBindingElement.

person Ries    schedule 11.11.2009