【问题标题】:How do I use MiniProfiler with a single page web app / REST backend?如何将 MiniProfiler 与单页 Web 应用程序/REST 后端一起使用?
【发布时间】: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 可以去除硬编码的 &lt;script&gt; 标签。

除此之外,从 MVC 的其他方面来看,分析器的使用与往常完全相同。当您在应用程序中执行导致 REST 调用发生的操作时,miniprofiler 会在角落显示它。在这里使用showControls:true 参数也很有帮助,因此会显示清除按钮,因为否则您只会得到一个恒定的操作列表,因为整个页面基本上不会刷新。

这是执行此操作的“正确”方法,还是有更好的方法?

【问题讨论】:

  • 澄清一下:您的解决方案有效,但您想要确认您一直在遵循最佳实践?
  • @KirkWoll 是的。因为没有太多关于分析器的文档,所以我想知道我是否忽略了现有的解决方案。最坏的情况是这个问题可以为未来的网络搜索提供一些文档。如果这是“最好”的方式,我可能会提交一个补丁,这样我就不必做我的.replace() hack 并使其成为真正的“官方”方式。
  • 我也有同样的问题。你还在这样做吗?
  • 应该在codereview.stackexchange.com上吗?

标签: asp.net-mvc-3 mvc-mini-profiler javascriptmvc


【解决方案1】:

在您的代码中有一个假设,即@MiniProfiler.RenderIncludes() 使用 javascript 生成它的所有内容。虽然这在当前可能是一个有效的假设,但这可能会改变。

为什么不干脆完全避免黑客攻击并使用 ajax 请求来加载分析器?在任何一种情况下,无论是 ajax 还是嵌入式脚本,通过回调插入分析器的行为都会在一定程度上影响分析的结果。

<div id="profiler"></div>
<script type="text/javascript">
  $.load("#profiler","api/profiler");
</script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-21
    • 2019-06-16
    • 2016-07-08
    • 1970-01-01
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多