Как я могу получить маршрутизацию WCF, чтобы дать мне более подробное сообщение об ошибке, чем - нет соответствующего сообщения сообщений?
-
26-10-2019 - |
Вопрос
Есть ли способ настроить маршрутизацию 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>
Конечная точка журнала просто указывает на простую службу, которая принимает сообщение и регистрирует его, и возвращает 404
Некоторый код псудо:
[ServiceBehavior]
public class RoutingLogger : IYourInterface
{
public System.ServiceModel.Channels.Message YourInterfaceMethod(System.ServiceModel.Channels.Message message)
{
LogMessage(message);
return new Custom404Message();
}
}