TracesSourceとASP.NET:Webサイトではなく、Webアプリケーションで動作します
-
27-10-2019 - |
質問
ASP.NET Webサイトにトレース機能を追加しているので、調査することにしました TracesSource いくつかのプロトタイプを作成することにより。 WebアプリケーションプロジェクトとWebサイトプロジェクト。
各プロジェクトに同様のweb.configを使用して、トレースを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>
私は単に次の基本的なトレースから始めています:
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.");
}
Webアプリケーションプロジェクトを使用すると、イベントログで作成されたトレースを確認できます。しかし、ウェブサイトプロジェクトでは、できません。
TracesSourceを使用するためにWebサイトプロジェクトで追加の手順(例:web.config設定、許可など)は必要ですか?
解決 2
いくつかの試行錯誤の後、明らかにsystem.codedom compilersノードがweb.configで必要ですが、その理由は完全にはわかりません。
他のヒント
この理由は、トレース定数がコンパイルの一部として定義されている場合にのみ、トレースメソッドが.NETによってコンパイルされるためです。 Webサイトプロジェクトでは、これを行う方法は、このようなWeb.configファイルにコンパイラ構成を含めることです。
<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>
「/d:Trace」コンパイラオプションに注意してください。これにより、コードをコンパイルするときにトレース定数が可能になります(この例のC#)。
所属していません StackOverflow