3

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

回复按预期写。但是,该请求似乎为空。关于可能出现问题的任何想法?我正在使用带有控制台应用程序的服务引用代理作为客户端。

我正在使用 basicHttpbinding 并使用带有 svc 文件的 IIS 进行托管。我的 web 方法的参数是复杂类型。我不确定这是否会有所不同。

4

2 回答 2

1

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

“现在是消息检查部分”下的更多信息:http: //binarymist.net/2010/06/14/message-inspection-in-wcf/

于 2011-01-03T23:09:32.160 回答
0

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

您的项目中还有其他 MessageInspector 吗?如果是这样,则其中一个可能正在设置request = null- 这将导致您遇到的问题,因为请求参数是ref.

如果不是,是什么让你说请求为空?您是否在声明中收到 NullReferenceException Debug.WriteLine(..)

于 2011-01-24T04:47:50.080 回答