ASP.NETページのトレース

ページ単位

チュートリアル : ASP.NET トレースと System.Diagnostics トレースの統合

WindowsFormアプリケーションの場合はConsole.Writeline()でデバッグメッセージをコンソール出力していたが、ASP.NETで同じことはできない。 System.Diagnostics.Traceクラスを使用し、Webページへトレース情報を出力する方法がもっとも手っ取り早い。 下記2点の作業で利用可能となる。

  • 対象ページのページディレクティブ(@Page)にTraceを"True"で追加する。*1
  • Web.configの /configuration/system.diagnostics/trace/listeners ノードにWebPageTraceListenerを追加する。
<system.diagnostics>
  <trace>
    <listeners>
      <add name="WebPageTraceListener" type="System.Web.WebPageTraceListener, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
    </listeners>
  </trace>
</system.diagnostics>

アプリケーション単位

方法 : ASP.NET アプリケーションのトレースを有効にする
ページ単位のデバッグではページごとにTrace有効無効を切り替える必要があり面倒である。 アプリケーション単位でのトレースを行うことで一括切り替え操作が可能になる。下記操作を行い、/trace.axdへアクセスするとトレース情報が表示される。

  • 全ページのページディレクティブ(@Page)にTraceを"False"にする。またはTraceを追加しない。
  • Web.configのトレースリスナーにWebPageTraceListenerを追加する。(ページ単位と同じ)
  • Web.configの /configuration/System.web/trace ノードを追加する。
<system.web>
  <trace enabled="true" pageOutput="false" requestLimit="40" localOnly="false"/>
</system.web>

ASP.NET MVCの場合

  • ビューエンジンがASPXの場合はページ単位、アプリケーション単位どちらも使用可能。*2
  • RAZORの場合はアプリケーション単位のみ使用可能。*3 *4

*1:PageクラスのTraceEnabledプロパティに設定される。

*2:ページクラスとしてASP.NETと同じViewPageクラスを使用しているため。

*3:razor用ページクラスとして既存のものとは互換性の無いSystem.Web.Mvc.WebViewPageを使用しているため。

*4:それにしてもクラス名がややこしい