Как я могу заставить WCF Routing выдавать мне более подробное сообщение об ошибке, чем - Нет соответствующего MessageFilter? - PullRequest
2 голосов
/ 10 июня 2011

Есть ли способ настроить маршрутизацию WCF, чтобы, если ваши фильтры не совпадали, вы могли получить больше информации о сообщении, которое не могло быть перенаправлено?

В настоящее время мы используем AppFabric, и мы получаем толькоследующее сообщение.Это сообщение не очень полезно при попытке выяснить, какое сообщение не соответствует фильтру.

No matching MessageFilter was found for the given Message.

1 Ответ

1 голос
/ 05 октября 2012

это не лучшее решение, я экспериментировал с способом проверки того, что служба маршрутизации работает, как настроено, но пока не нашел лучшего способа.

Но один из способов - это предоставитьсопоставить все фильтры и иметь службу, которая принимает все запросы и регистрирует ее и возвращает 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();
    }
}
...