有没有办法配置WCF路由,这样如果您的过滤器不匹配,您可以获得有关无法路由的消息的更多信息?
目前我们正在使用AppFabric,我们只收到以下消息。 在尝试确定哪个消息与过滤器不匹配时,此消息不是很有用。
No matching MessageFilter was found for the given Message.
答案 0 :(得分:1)
这不是最好的解决方案,我一直在尝试验证路由服务是否按配置运行,但还没有找到最佳方法。
但是一种方法是提供匹配所有过滤器,并提供接受所有请求并记录它的服务,并将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
一些psudo代码:
[ServiceBehavior]
public class RoutingLogger : IYourInterface
{
public System.ServiceModel.Channels.Message YourInterfaceMethod(System.ServiceModel.Channels.Message message)
{
LogMessage(message);
return new Custom404Message();
}
}