TraceSource e ASP.NET: Opere per applicazioni Web, non siti web
-
27-10-2019 - |
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
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)