小编use*_*435的帖子

ASP.NET MVC跟踪问题

如何使ASP.NET MVC跟踪信息与页面内跟踪输出一致为trace.axd?我可能只是遗漏了一些明显的东西,如果你看到它,请把它叫出来.

传统ASP.NET的背景信息

回到常规的ASP.NET时代,您只需将以下内容添加到web.config:

<system.diagnostics>
    <trace>
        <listeners>
            <add name="WebPageTraceListener" type="System.Web.WebPageTraceListener, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
        </listeners>
    </trace>
</system.diagnostics>
...
<system.web>
    <trace enabled="true" pageOutput="true" writeToDiagnosticsTrace="true"/>
...
<system.codedom>
    <compilers>
        <compiler language="c#;cs;csharp" extension=".cs" warningLevel="1" compilerOptions="/d:TRACE" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
Run Code Online (Sandbox Code Playgroud)

然后,您可以在页面中添加以下内容:

HttpContext.Current.Trace.Write("Write Trace Here");
or
System.Diagnostics.Trace.Write("Write Trace Here");
Run Code Online (Sandbox Code Playgroud)

如果你点击你的页面(即localhost:61115/Default.aspx),你会得到一个很好的跟踪表,其中你的自定义跟踪嵌入了asp.net页面事件:

aspx.page Begin Load 0.00343 0.000357
test 0.00462176 0.001192 
aspx.page End Load 0.00526904 0.000018 
Run Code Online (Sandbox Code Playgroud)

命中localhost:61115/Trace.axd?id = 0将保留与页内跟踪输出相同的跟踪结果.

ASP.NET MVC的背景信息

不幸的是,由于我不知道的原因,我无法在ASP.NET MVC 2.0中使用它.我使用类似于上面列出的web.config设置.有趣的是,我只能获得部分工作的痕迹.因此,如果我点击功能等效的默认页面(也就是我的homecontroller的索引操作方法),我会看到所有传统的asp.net页面事件,例如preinit,preload,prerender等,但是没有使用System.Diagnostics也没有自定义跟踪消息. HttpContext.Trace.Write.

但是,如果我转向Trace.axd?id = 0文件,我会收到我的自定义跟踪消息,但没有ASP.NET页面事件跟踪输出.我必须在这里遗漏一些导致我在页面与trace.axd中看到的跟踪信息不一致的事情(回想一下传统的asp.net输出相同的页内与trace.axd输出).我真的希望我的页内跟踪信息与trace.axd一致(通过删除传统的asp.net页面事件或其他方式).有什么我想念的吗?

asp.net-mvc trace

19
推荐指数
3
解决办法
2万
查看次数

标签 统计

asp.net-mvc ×1

trace ×1