Резервные списки маршрутизации WCF — ведение журнала при их использовании

#wcf #endpoints #wcf-endpoint #wcf-routing

#wcf #конечные точки #wcf-конечная точка #wcf-маршрутизация

Вопрос:

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

      <filterTables>
        <filterTable name="RoutingTable">
          <add filterName="Filter1" endpointName="EP1" priority="0" backupList="FailOver"/>
        </filterTable>
      </filterTables>
      <backupLists>
        <backupList name="FailOver">
          <add endpointName="EP2" />
        </backupList>
      </backupLists>
  

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

Комментарии:

1. Не уверен, что у вас есть точка расширения для этого. Но вы можете использовать AppFabric для мониторинга вашего клиента / службы. Кроме того, вы можете реализовать пользовательский фильтр сообщений, который регистрирует результат.

Ответ №1:

попробуйте создать поведение службы (или поведение конечной точки и настроить поведение на всех конечных точках)

подключите инспектор сообщений IClientMessageInspector

передайте конечную точку в конструкторе

регистрируйте сообщение и конечную точку в методе BeforeSendRequest

 public class MyClientMessageInspector : IClientMessageInspector
{
    private ServiceEndpoint _endpoint;

    public MyClientMessageInspector(ServiceEndpoint endpoint)
    {
        _endpoint = endpoint;
    }

    public object BeforeSendRequest(ref Message request, IClientChannel channel)
    {
        Log(request, _endpoint);
        return null;
    }

    public void AfterReceiveReply(ref Message reply, object correlationState)
    {
        //no-op
    }
}
  

затем вы хотите применить инспектор к поведению и подключиться к маршрутизатору