WCF检查邮件

时间:2011-01-03 20:29:32

标签: wcf message inspector

我正在尝试实现一个简单的消息检查器,它将消息从示例on 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());
    }
}

回复是按预期写的。但是请求似乎是null。什么可能出错?我正在使用服务引用代理和控制台应用程序作为客户端。

我正在使用basicHttpbinding并使用svc文件托管IIS。我的Web方法的参数是一个复杂的类型。我不确定这是否有所作为。

2 个答案:

答案 0 :(得分:1)

首先尝试消息请求的CreateBufferedCopy(即克隆):http://msdn.microsoft.com/en-us/library/ms734675.aspx(将消息复制到缓冲区中)。

更多信息请点击“现在查看邮件检查部分”:http://binarymist.net/2010/06/14/message-inspection-in-wcf/

答案 1 :(得分:0)

我复制并粘贴了MyMessageInspector类,并将行为添加到我的Web服务中,并且工作正常 - 调用Web服务时,SOAP信封将打印为XML。

您的项目中是否还有其他MessageInspectors?如果是这样,其中一个可能会设置request = null - 这会导致您遇到的问题,因为请求参数为ref

如果没有,是什么让你说请求是空的?你在Debug.WriteLine(..)语句中得到NullReferenceException吗?