【发布时间】:2012-03-22 21:49:45
【问题描述】:
我有一个单页 javascript 应用程序(使用 JavascriptMvc 完成)和一个基于 ASP.NET MVC3 构建的带有 REST 服务的后端(使用 NServiceMVC 完成)。
REST 服务已安装并运行 MiniProfiler,每个 AJAX 请求都会返回 X-MiniProfiler-Ids 标头。我确实有 miniprofiler 正在运行和工作,但我找不到任何关于此的信息,所以我不确定我是否以正确的方式进行操作。
这是一个受支持的场景吗?现在有具体的方法吗?
我目前正在做的是:
在 HTML 应用程序中(全是静态代码,没有动态的东西),我有:
<script type="text/javascript" src="/api/profiler"></script>
在我的 MVC 应用程序中,我有:
public ActionResult Profiler()
{
if (!ControllerContext.HttpContext.IsDebuggingEnabled)
{
return new EmptyResult();
}
return new ContentResult() {
Content = StackExchange.Profiling.MiniProfiler.RenderIncludes(
position: RenderPosition.Right,
showControls: true
)
.ToString()
.Replace("<script type=\"text/javascript\">", "")
.Replace("</script>", "")
};
}
显然,这里有一个 hack 可以去除硬编码的 <script> 标签。
除此之外,从 MVC 的其他方面来看,分析器的使用与往常完全相同。当您在应用程序中执行导致 REST 调用发生的操作时,miniprofiler 会在角落显示它。在这里使用showControls:true 参数也很有帮助,因此会显示清除按钮,因为否则您只会得到一个恒定的操作列表,因为整个页面基本上不会刷新。
这是执行此操作的“正确”方法,还是有更好的方法?
【问题讨论】:
-
澄清一下:您的解决方案有效,但您想要确认您一直在遵循最佳实践?
-
@KirkWoll 是的。因为没有太多关于分析器的文档,所以我想知道我是否忽略了现有的解决方案。最坏的情况是这个问题可以为未来的网络搜索提供一些文档。如果这是“最好”的方式,我可能会提交一个补丁,这样我就不必做我的
.replace()hack 并使其成为真正的“官方”方式。 -
我也有同样的问题。你还在这样做吗?
标签: asp.net-mvc-3 mvc-mini-profiler javascriptmvc