有没有办法配置 WCF 路由,以便如果您的过滤器不匹配,您可以获得有关无法路由的消息的更多信息?
目前我们正在使用 AppFabric,我们只收到以下消息。在尝试找出与过滤器不匹配的消息时,此消息不是很有帮助。
No matching MessageFilter was found for the given Message.
有没有办法配置 WCF 路由,以便如果您的过滤器不匹配,您可以获得有关无法路由的消息的更多信息?
目前我们正在使用 AppFabric,我们只收到以下消息。在尝试找出与过滤器不匹配的消息时,此消息不是很有帮助。
No matching MessageFilter was found for the given Message.
这不是最好的解决方案,我一直在试验一种方法来验证路由服务是否按配置工作,但还没有找到最好的方法。
但一种方法是提供一个匹配所有过滤器,并拥有一个接受所有请求并记录它的服务,并将 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();
}
}