2012-04-19 12 views
6

L'applicazione che sto costruendo espone diversi servizi WCF (A, B). Internamente, consuma diversi altri servizi WCF in esecuzione sulla nostra rete interna (X, Y).Ignora determinati servizi WCF dai registri di traccia WCF

Utilizzando la registrazione dei messaggi WCF, desidero il solo il traffico di registro tra i nostri servizi A, B e i client esterni che li chiamano.

Nessun dato tra i miei servizi (A, B) ei servizi di back-end (X, Y) devono essere registrati da WCF.

filtraggio tramite System.ServiceModel/diagnostica/messageLogging/filtri è stato parzialmente di successo con:

<filters> 
     <add nodeQuota="10" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
     /s:Envelope/s:Header/*[contains(text(),"MyServiceA")] 
     </add> 
     <add nodeQuota="10" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:a="http://schemas.microsoft.com/ws/2005/05/addressing/none"> 
     /s:Envelope/s:Header/a:Action[contains(text(),"MyServiceA")] 
     </add> 
    </filters> 

Questo però non riesce a catturare le risposte dal nostro servizio, come SOAP risposte non contengono testo per filtrare.

La WCF MessageLogTraceRecord non contiene l'azione SOAP, ma io non riesco a costruire un filtro per accedervi:

<MessageLogTraceRecord> 
    <Addressing xmlns="http://schemas.microsoft.com/2004/06/ServiceModel/Management/MessageTrace> 
    <Action>http://opia.api.translink.com.au/ApiLocationService/2012/04/IApiLocationService/ResolveInputServiceFaultFault</Action> 
    </Addressing> 
    <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
     <s:Body> 
     ... 

registrazione dei messaggi WCF e end to end tracciando sono abilitati con tutte le opzioni impostate su vero. La registrazione del livello ActivityTracing e Warning è abilitata.

+1

Si desidera filtrare perché siete preoccupati per le dimensioni del file o rumore? L'interfaccia utente di MS Service Trace Viewer è piuttosto efficace nel filtraggio. –

+1

Principalmente rumore. I servizi "interiori" sono estremamente chiacchieroni, una chiamata al nostro servizio include più di 30 chiamate alla loro. L'interfaccia di servizio interna è tuttavia ben testata e non è possibile apportare modifiche. – geoffreys

risposta

2

Prova questa

<filters> 
     <add nodeQuota="10" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
     /s:Envelope/s:Header/*[contains(text(),"MyServiceA")] 
     </add> 
     <add nodeQuota="10" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:a="http://schemas.microsoft.com/ws/2005/05/addressing/none"> 
     /s:Envelope/s:Header/a:Action[contains(text(),"http://opia.api.translink.com.au/ApiLocationService/2012/04/IApiLocationService/ResolveInputServiceFaultFault")] 
     </add> 
    </filters> 

sostituito il testo "MyServiceA" filtro azione con l'URL nella MessageLogTraceRecord> Azione