#c# #wcf #appfabric #wcf-routing
#c# #wcf #appfabric #wcf-routing
Вопрос:
Есть ли способ настроить маршрутизацию WCF так, чтобы, если ваши фильтры не совпадают, вы могли получить больше информации о сообщении, которое не удалось перенаправить?
В настоящее время мы используем AppFabric и получаем только следующее сообщение. Это сообщение не очень полезно при попытке выяснить, какое сообщение не соответствовало фильтру.
No matching MessageFilter was found for the given Message.
Ответ №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>
Конечная точка регистратора просто указывает на простую службу, которая принимает сообщение и регистрирует его, и возвращает 404
некоторый код psudo:
[ServiceBehavior]
public class RoutingLogger : IYourInterface
{
public System.ServiceModel.Channels.Message YourInterfaceMethod(System.ServiceModel.Channels.Message message)
{
LogMessage(message);
return new Custom404Message();
}
}