在WCF自定义消息过滤器中读取soap消息正文内容

时间:2011-07-22 11:16:01

标签: wcf routing

我一直在使用WCF路由并实现了自定义消息过滤器

    public override bool Match(Message message)
    {
        MessageBuffer buffer = message.CreateBufferedCopy(Int32.MaxValue);

        var msg = buffer.CreateMessage();

        XmlDictionaryReader reader = msg.GetReaderAtBodyContents();

        string paramsXml = reader.ReadOuterXml();

        ....
        ....

        return serviceType.Equals(service);
    }

我收到以下异常“此消息无法支持该操作,因为它已被复制。”虽然我正在创建一个缓冲副本。任何人都可以帮我吗?

2 个答案:

答案 0 :(得分:3)

这显然是VS调试器的问题。肥皂ui或其他客户不会发生这种情况。希望这对那些在同样问题上挣扎的人有用。

答案 1 :(得分:2)

您需要在路由行为

中设置routeOnHeadersOnly = false

然后执行采用消息缓冲区的操作