2011-05-03 138 views
2

在ASP.NET MVC 3應用程序中,從父控制器方法(或調用的業務對象)調用HttpContext.Trace.Write和System.Diagnostics.Trace.Write會導致Trace.axd中的條目。爲什麼跟蹤在ASP.NET MVC子操作中不起作用?

如果父視圖調用子動作,例如, Html.RenderAction(「ChildAction」),則ChildAction Controller方法內的跟蹤語句不會反映在Trace.axd中。 但是,如果我直接點擊http://localhost/Home/ChildAction,則語句確實會出現在跟蹤中。

我做錯了什麼,或者是否有一些網站配置需要允許跟蹤爲孩子行爲和他們所調用的任何業務方法?

HomeController.cs:

public ActionResult Index() 
{ 
    HttpContext.Trace.Write("blah"); 
    System.Diagnostics.Trace.WriteLine("blah diag"); 
    var b = new Business(); 
    b.DoStuff(); 
    return View(); 
} 

public ActionResult ChildAction() 
{ 
    HttpContext.Trace.Write("child action trace"); 
    System.Diagnostics.Trace.WriteLine("child action diag"); 
    var b = new Business(); 
    b.DoStuff(); 
    return Content("some content"); 
} 

Index.cshtml:

<h2>Index</h2>
@{ Html.RenderAction("ChildAction"); }

web.config中:

<trace enabled="true" localOnly="false" mostRecent="true" pageOutput="false" requestLimit="1000" traceMode="SortByTime" writeToDiagnosticsTrace="false" />

<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>

回答

0

DGreen,也許你可以嘗試使用掠影(website)。它有它自己的TraceListener實現,可以爲你解決這個問題。