Domanda

Sto aggiungendo funzionalità di analisi ad un sito ASP.NET così ho deciso di indagare su TraceSource con la creazione di un paio di prototipi; un progetto di applicazione Web e un progetto sito web.

Sto usando web.config simile per ogni progetto per accedere tracce nel registro eventi di 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>

Sto semplicemente iniziando con la seguente traccia di base:

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 il progetto di applicazione Web, posso vedere la traccia creata nel registro eventi. Tuttavia, con il progetto sito web, non posso.

Sono passaggi aggiuntivi? (Es: impostazioni web.config, permessi, ecc) necessarie con i progetti sito web per utilizzare TraceSource

È stato utile?

Soluzione 2

Dopo alcuni tentativi ed errori, a quanto pare il nodo System.CodeDom \ compilatori è richiesto nel web.config, ma non sono del tutto sicuro perché.

Altri suggerimenti

La ragione di questo è perché i metodi di traccia vengono compilati solo se la costante Net TRACE è definito come parte della compilazione. In un progetto di sito Web, il modo per farlo è quello di includere la configurazione del compilatore nel file web.config, in questo modo:

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

Si noti la "/ d: TRACE". Opzione del compilatore, che consente la costante TRACE quando si compila il codice (C # in questo esempio)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top