#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
}
}
затем вы хотите применить инспектор к поведению и подключиться к маршрутизатору