2009-12-18 9 views
7

Ho tutte le mie connessioni configurate dal mio codice, invece di usare il mio file di configurazione. Come procedere sulla configurazione di Traccia WCF su una connessione creata dal codice. Ho provato ad aggiungere la traccia al file di configurazione, come spiegato here, ma non produce alcun registro.Traccia WCF da codice

Ho bisogno di sapere come farlo funzionare dal file di configurazione per le connessioni impostate nel codice, o come configurarlo manualmente nel codice se qualcuno ha qualche informazione. Grazie!

EDIT: Per aggiungere un po 'più di informazioni:

L'applicazione è un'applicazione C# Console, e il mio legame è dichiarato come:

private Binding getBinding() 
{ 
    NetTcpBinding tcp = new NetTcpBinding(); 
    tcp.ReaderQuotas.MaxArrayLength = 65535; 
    tcp.TransferMode = TransferMode.Streamed; 
    tcp.ReaderQuotas.MaxArrayLength = int.MaxValue; 
    tcp.ReaderQuotas.MaxDepth = int.MaxValue; 
    tcp.ReaderQuotas.MaxStringContentLength = int.MaxValue; 
    tcp.ReaderQuotas.MaxBytesPerRead = int.MaxValue; 
    tcp.ReaderQuotas.MaxNameTableCharCount = int.MaxValue; 
    tcp.MaxReceivedMessageSize = int.MaxValue; 
    return tcp; 
} 

E io quindi aggiungere servizi alla mia app utilizzando un generico funzione:

private List<ServiceHost> m_Hosts = new List<ServiceHost>(); 
private static List<string> m_Services = new List<string>(); 

public void AddHost<T1, T2>(string uri) 
    where T1 : class 
    where T2 : class 
{ 
    m_Services.Add("net.tcp://<ipaddress>:<port>/" + uri); 
    m_Hosts.Add(new ServiceHost(typeof(T1))); 
    m_Hosts[m_Hosts.Count - 1].AddServiceEndpoint(typeof(T2), getBinding(), m_Services[m_Services.Count - 1]); 
} 

C'è ovviamente un po 'più di codice per rendere questo tutto il lavoro, ma questo dovrebbe dare tutte le parti interessate.

risposta

5

Quello che segue è un esempio .config per abilitare la traccia, se si vuole dare un altro tentativo. Assicurarsi che il file .config si trovi nella stessa cartella dell'host del servizio WCF.

<configuration> 
    <system.diagnostics> 
    <sources> 
     <source name="System.ServiceModel" switchValue="Warning" propagateActivity="true" > 
     <listeners> 
      <add name="xml"/> 
     </listeners> 
     </source> 

     <source name="myUserTraceSource" switchValue="Warning, ActivityTracing"> 
     <listeners> 
      <add name="xml"/> 
     </listeners> 
     </source> 
    </sources> 

    <sharedListeners> 
     <add name="xml" 
      type="System.Diagnostics.XmlWriterTraceListener" 
      initializeData="TraceLog.svclog" /> 
    </sharedListeners> 

    </system.diagnostics> 
</configuration> 

Microsoft fornisce un Service Trace Viewer Tool per leggere i file .svclog.

Assicurarsi che il percorso in cui verrà salvato il .svclog disponga delle autorizzazioni di scrittura necessarie.

+1

Ti consigliamo di fare in modo che l'initializeData = 'attributo' ha il nome di un file in una cartella posizione che è scrivibile dal tuo servizio. Altrimenti non è scritto nulla. –

+0

Nulla di che ... Non genera eccezioni o altro, ma non crea neanche un file di registro. –

+0

@ md5sum: puoi verificare che il file 'app.config' venga letto dall'applicazione host? Ad esempio, prova ad aggiungere '' nel tuo 'app.config' e prova a leggerlo con' System.Configuration.ConfigurationSettings.AppSettings ["TEST_KEY "]' dall'applicazione host. –

Problemi correlati