TracesSourceとASP.NET:Webサイトではなく、Webアプリケーションで動作します

StackOverflow https://stackoverflow.com/questions/5342210

質問

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#)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top