Pregunta

Estoy agregando funcionalidad de rastreo a un sitio web de ASP.NET, así que decidí investigar Traza creando un par de prototipos; Un proyecto de aplicación web y un proyecto de sitio web.

Estoy usando Web.Config similar para cada proyecto para registrar trazas al registro de eventos de Windows:

<configuration>
    <system.web>
        <compilation debug="true" strict="false" explicit="true" targetFramework="4.0"/>
    </system.web>    
    <system.diagnostics>
        <trace autoflush="true" />
        <sources>
            <source name="HelloWorld">
                <listeners>
                    <add name="eventlogListener" />
                </listeners>
            </source>
        </sources>    
        <sharedListeners>
            <add name="eventlogListener" type="System.Diagnostics.EventLogTraceListener" initializeData="My Source" />
        </sharedListeners>
    </system.diagnostics>
</configuration>

Simplemente estoy comenzando con la siguiente traza básica:

private static TraceSource _ts = new TraceSource("HelloWorld", SourceLevels.All);

protected override void OnLoad(EventArgs e)
{
    base.OnLoad(e);

    _ts.TraceEvent(TraceEventType.Information, 10, "Greetings from OnLoad.");
}

Con el proyecto de aplicación web, puedo ver la traza creada en el registro de eventos. Sin embargo, con el proyecto del sitio web, no puedo.

¿Se requieren pasos adicionales (ex: configuración web.config, permisos, etc.) con los proyectos del sitio web para usar TRACAYOURCE?

¿Fue útil?

Solución 2

Después de alguna prueba y error, aparentemente el nodo System.Codedom Compilers se requiere en Web.Config, pero no estoy completamente seguro de por qué.

Otros consejos

La razón de esto es porque los métodos de rastreo solo son compilados por .NET si la constante de rastreo se define como parte de la compilación. En un proyecto de sitio web, la forma de hacerlo es incluir la configuración del compilador en su archivo web.config, así:

  <system.codedom>
    <compilers>
      <compiler
         language="c#;cs;csharp"
         extension=".cs"
         type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.50727.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
         compilerOptions="/d:TRACE"
         warningLevel="1" />
    </compilers>
  </system.codedom>

Tenga en cuenta la opción del compilador "/D: Trace", que habilita la constante de seguimiento al compilar su código (C# en este ejemplo).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top