如何让WCF路由为我提供比-无匹配的MessageFilter更详细的错误消息

本文关键字:MessageFilter 无匹配 消息 错误 WCF 路由 | 更新日期: 2023-09-27 17:58:49

是否有一种方法可以配置WCF路由,以便在筛选器不匹配的情况下可以获得有关无法路由的消息的更多信息?

目前我们正在使用AppFabric,我们只收到以下消息。当试图找出哪条消息与筛选器不匹配时,此消息没有太大帮助。

No matching MessageFilter was found for the given Message.

如何让WCF路由为我提供比-无匹配的MessageFilter更详细的错误消息

这不是最好的解决方案,我一直在尝试一种方法来验证路由服务是否按配置工作,但还没有找到最好的方法。

但一种方法是提供一个匹配所有过滤器,并拥有一个接受所有请求并将其记录下来的服务,并将404返回给客户端

    <routing>
        <filters>
            <filter name="Other" filterType="MatchAll" />
            <filter name="action1" filterType="Action" filterData="http://tempuri.org/action2" />
            <filter name="action2" filterType="Action" filterData="http://tempuri.org/action1" />
        </filters>
        <filterTables>
            <filterTable name="FilterTable">
                <add filterName="action1" endpointName="Service1" priority="1" />
                <add filterName="action2" endpointName="Service2" priority="1" />
                <add filterName="Other" endpointName="Logger" priority="0" />
            </filterTable>
        </filterTables>
    </routing>

Logger端点简单地指向一个简单的服务,该服务接受消息并将其记录下来,并返回404

一些伪随机码:

[ServiceBehavior]
public class RoutingLogger : IYourInterface
{
    public System.ServiceModel.Channels.Message YourInterfaceMethod(System.ServiceModel.Channels.Message message)
    {
        LogMessage(message);
        return new Custom404Message();
    }
}