答案 0 :(得分:9)
直接从“MVC 2 in action”一书中引用:
在Web中调用Trace.Write()时 表格,你正在与之互动 跟踪 - 上下文类。这存在于 你在ASP.NET MVC中的ViewPage,但是这个 不是你想写的地方 追查陈述。等到你的时候 将接力棒传递到视野, 那里没有你需要的逻辑 追踪。相反,你想跟踪 嵌入你的逻辑 控制器。你可能会尝试利用 你的TraceContext类 控制器,但这些陈述不会 永远地进入清单 跟踪日志中的消息(在您的 页面或Trace.axd)。相反,你 可以使用System.Diagnostics.Trace和 设置自己的TraceListeners 检查你的活动 控制器。或者,你可以 利用更成熟的日志记录 log4net或NLog等框架:
您调试ASP.NET MVC应用程序 和任何.NET一样 应用。然而,追踪却没有 为MVC提供尽可能多的东西。相反,你 可以依靠内置 .NET中的TraceListeners,或者使用 这些好的日志库 较早前提过。另一个方面 错误记录是健康监测。
很抱歉没有用我自己的话来回答,但我认为这个解释是现场的:)
答案 1 :(得分:9)
答案 2 :(得分:4)
不使用HttpContext.Current.Trace或System.Diagnostics.Trace,而是尝试使用Controller.HttpContext.Trace?
答案 3 :(得分:2)
引用不适用于过滤器和操作中的跟踪。即使这样,它也不适用,因为你可以从OnResultExecuting获得跟踪输出。只有OnResultExecuted才能获得跟踪输出为时已晚。
我只能通过在Cassini中运行我的MVC 3应用程序来集成跟踪输出在IIS 7.5中工作 - 然后集成跟踪开始在IIS 7.5中工作。
我正在调查MVC中的一些痕量异常
答案 4 :(得分:0)
您可以尝试使用Html.Action让控制器为您进行跟踪。 例如,如果需要从默认的“错误”视图中跟踪错误,则可以使用
Html.Action("TraceError", "Error", new { ControllerName = Model.ControllerName, ActionName = Model.ActionName, Exception = Model.Exception })
然后在Error Controller中,实现方法
public ActionResult TraceError(String ControllerName, String ActionName, Exception Exception)
{
System.Diagnostics.Trace.TraceError("Error Message: {0}", Exception.Message);
// Other tracing statements
}