gpt4 book ai didi

asp.net-mvc - ASP.NET MVC 跟踪问题

转载 作者:行者123 更新时间:2023-12-03 12:45:42 26 4
gpt4 key购买 nike

问题

如何使 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">

然后,您可以在页面中添加以下内容:
HttpContext.Current.Trace.Write("Write Trace Here");
or
System.Diagnostics.Trace.Write("Write Trace Here");

如果你点击你的页面(即 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

点击 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 页面事件或其他方式)。有什么我想念的吗?

最佳答案

直接引用“MVC 2 in action”一书:

When you called Trace.Write() in WebForms, you were interacting with theTrace- Context class. This exists onyour ViewPage in ASP.NET MVC, but thisisn’t where you would want to writetracing statements. By the time you’vepassed the baton over to the view,there’s no logic there that you’d needto trace. Instead, you’d like to tracethe logic embedded in yourcontrollers. You might try to leveragethe TraceContext class in yourcontroller, but these statements won’tever make their way to the list ofmessages in the trace log (on yourpage or on Trace.axd). Instead, youcan use System.Diagnostics.Trace andset up your own TraceListeners toinspect the activity in yourcontrollers. Alternatively, you canleverage a more mature loggingframework such as log4net or NLog:

You debug ASP.NET MVC applicationsjust as you would any .NETapplication. Tracing, however, doesn’toffer as much for MVC. Instead, youcan lean on the built-inTraceListeners in .NET, or utilize agood logging library like thosementioned earlier. Another aspect oferror logging is health monitoring.


很抱歉没有用我自己的话回答,但我认为这个解释是正确的:)

关于asp.net-mvc - ASP.NET MVC 跟踪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3328678/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com