2009-12-18 16 views
7

Tengo todas mis conexiones configuradas desde mi código, en lugar de utilizar mi archivo de configuración. ¿Cómo se puede configurar WCF Tracing en una conexión construida a partir de código? Traté de agregar el seguimiento al archivo de configuración, como se explica en here, pero no produce ningún registro.WCF Tracing From Code

Necesito saber cómo hacer que funcione desde el archivo de configuración para las conexiones configuradas en el código, o cómo configurarlo manualmente en el código si alguien tiene alguna información. ¡Gracias!

EDIT: Para añadir un poco más de información:

La aplicación es una aplicación de consola de C#, y mi se declara unión como:

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; 
} 

Y luego añadir servicios a mi aplicación con un genérico función:

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]); 
} 

Obviamente hay un poco más de código para hacer que todo funcione, pero esto debería dar las piezas pertinentes.

Respuesta

5

El siguiente es un ejemplo de .config para habilitar el rastreo, si desea darle otro intento. Asegúrese de que el archivo .config esté ubicado en la misma carpeta de su host de servicio 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 proporciona un Service Trace Viewer Tool leer .svclog archivos.

Asegúrese de que la ruta en la que va a guardar el archivo .svclog tenga los permisos de escritura necesarios.

+1

Usted querrá asegurarse de que el initializeData = atributo '' tiene el nombre de un archivo en una carpeta ubicación que puede escribir en su servicio. De lo contrario, nada está escrito. –

+0

Nada en absoluto ... No arroja ninguna excepción ni nada, pero tampoco crea un archivo de registro. –

+0

@ md5sum: ¿Puedes verificar que la aplicación host esté leyendo tu archivo 'app.config'? Por ejemplo, intente agregar '' en su 'app.config' e intente leerlo con' System.Configuration.ConfigurationSettings.AppSettings ["TEST_KEY "]' desde su aplicación de host. –