Tracesource und ASP.NET: Funktioniert für Webanwendungen, nicht für Websites
-
27-10-2019 - |
Frage
Ich füge eine ASP.NET -Website nachverfolgten Funktionen hinzu, also habe ich mich entschlossen, zu untersuchen Tracesource durch Erstellen einiger Prototypen; Ein Webantragsprojekt und ein Website -Projekt.
Ich verwende ähnliche Web.config für jedes Projekt, um Spuren für das Windows -Ereignisprotokoll zu protokollieren:
<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>
Ich beginne einfach mit der folgenden Grundverfolgung:
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.");
}
Mit dem Web -Anwendungsprojekt kann ich die im Ereignisprotokoll erstellte Trace sehen. Mit dem Website -Projekt kann ich jedoch nicht.
Sind zusätzliche Schritte (z. B. Web.Config -Einstellungen, Berechtigungen usw.) bei den Website -Projekten erforderlich, um Spurenource zu verwenden?
Lösung 2
Nach einigen Versuch und Irrtum ist im web.config anscheinend das System.
Andere Tipps
Der Grund dafür ist, dass die Trace -Methoden nur von .NET zusammengestellt werden, wenn die Spurenkonstante als Teil des Kompilierung definiert wird. In einem Website -Projekt können die Compiler -Konfiguration in Ihre Web.config -Datei wie folgt einbezogen werden:
<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>
Beachten Sie die Option "/d: Trace" -Kompiler, mit der die Trace -Konstante beim Kompilieren Ihres Codes (C# in diesem Beispiel) ermöglicht wird.