WCF проверяет сообщения - PullRequest
3 голосов
/ 03 января 2011

Я пытаюсь реализовать простой инспектор сообщений, который записывает сообщение в окно отладки из примера на MSDN :

public class MyMessageInspector : IDispatchMessageInspector
{
    public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext)
    {
        System.Diagnostics.Debug.WriteLine(request.ToString());
        return null;
    }

    public void BeforeSendReply(ref Message reply, object correlationState)
    {
        System.Diagnostics.Debug.WriteLine(reply.ToString());
    }
}

Ответ записывается, как и ожидалось.Однако запрос кажется нулевым.Любые идеи о том, что может пойти не так?Я использую прокси-сервер Service Reference с консольным приложением в качестве клиента.

Я использую basicHttpbinding и хостинг с IIS с файлом svc.Параметр для моего веб-метода является сложным типом.Я не уверен, если это имеет значение.

Ответы [ 2 ]

1 голос
/ 04 января 2011

Попробуйте сначала CreateBufferedCopy (то есть клонировать) запроса на сообщение: http://msdn.microsoft.com/en-us/library/ms734675.aspx (Копирование сообщения в буфер).

Более подробная информация здесь в разделе «Теперь для проверки сообщения»: http://binarymist.net/2010/06/14/message-inspection-in-wcf/

0 голосов
/ 24 января 2011

Я скопировал и вставил класс MyMessageInspector и добавил поведение в мой веб-сервис, и он работает нормально - когда вызывается веб-сервис, конверт SOAP печатается как XML.какие-либо другие MessageInspectors в вашем проекте?Если это так, возможно, что один из них устанавливает request = null - это вызовет возникшую у вас проблему, поскольку параметр запроса равен ref.

ноль?Получаете ли вы исключение NullReferenceException для оператора Debug.WriteLine(..)?

...