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

StackOverflow https://stackoverflow.com/questions/6311423

  •  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();
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top