2

mvcでトレースを有効にしたい、具体的には、特定の条件が満たされた場合にページにトレースを表示したい。

System.Diagnostics.Trace単一のリクエストのコンテキストで書き込みをリクエストした場合に、書き込みを表示できるようにすることはできますか?

4

2 に答える 2

3

残念ながら、このTraceクラスには、リクエストごとに解決したい条件に応じてトレースをオン/オフする方法がありません。これは、オール オア ナッシングのアプローチです。

そうは言っても、 MVC MiniProfilerを強くお勧めします(ここでは Stack Exchange サイトで使用され、特にStack Exchange Data Explorerで公開されています)。

基本的に、次のようにページにレンダリングされます。

ミニプロファイラーのスクリーンショット

また、リクエストごとにプロファイリングを設定できます。

using StackExchange.Profiling;
...    
protected void Application_BeginRequest()
{
    if (Request.IsLocal)
    {
        MiniProfiler.Start();
    } 
}

構文は、次のようにステートメントTraceを使用する必要があるという点で、クラスを使用する場合とは少し異なります。using

using (profiler.Step("Set page title"))
{
    ViewBag.Title = "Home Page";
}

その理由は、これが根本的に異なる操作だからです。トレースすると、特定の時点で情報を書き出すことになります。プロファイリングを行うときは、時間のセグメントを見ています。このusingステートメントを使用すると、それらのセグメントの範囲を指定できます。

少しやり過ぎかもしれませんがTrace、プロファイリングの側面と、表示される情報の邪魔にならない性質のために、これを喜んで使用します(Traceページを非常に奇妙に見せるという厄介な習慣があります).

于 2012-07-04T05:13:52.280 に答える
0

最終的には、クラスにロガーを渡し、必要に応じてその情報を条件付きでコントローラーに表示することにしました。

コンテナーを使用して、ロガー インスタンスを HttpContext のスコープにバインドし、それをビュー モデルに送り込みました。

于 2012-07-10T23:36:34.737 に答える