Asp.net mvc 3 如何将MiniProfiler与单页web app/REST后端一起使用?

Asp.net mvc 3 如何将MiniProfiler与单页web app/REST后端一起使用?,asp.net-mvc-3,mvc-mini-profiler,javascriptmvc,Asp.net Mvc 3,Mvc Mini Profiler,Javascriptmvc,我有一个单页javascript应用程序(使用JavascriptMvc完成)和一个在ASP.NET MVC3之上构建REST服务的后端(使用NServiceMVC完成) REST服务安装并运行了MiniProfiler,每个AJAX请求都会返回X-MiniProfiler-Ids头。我确实有miniprofiler正在运行和工作,但是我找不到任何关于这方面的信息,所以我不确定我是否用正确的方法来做 这是一个受支持的场景吗?现在有没有具体的方法 我目前正在做的是: 在HTML应用程序(全是静态

我有一个单页javascript应用程序(使用JavascriptMvc完成)和一个在ASP.NET MVC3之上构建REST服务的后端(使用NServiceMVC完成)

REST服务安装并运行了MiniProfiler,每个AJAX请求都会返回X-MiniProfiler-Ids头。我确实有miniprofiler正在运行和工作,但是我找不到任何关于这方面的信息,所以我不确定我是否用正确的方法来做

这是一个受支持的场景吗?现在有没有具体的方法


我目前正在做的是:

在HTML应用程序(全是静态代码,没有动态内容)中,我有:


在我的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>", "") 
        };
    }
public ActionResult探查器()
{
如果(!ControllerContext.HttpContext.IsDebuggingEnabled)
{
返回新的EmptyResult();
}
返回新的ContentResult(){
Content=StackExchange.Profiling.MiniProfiler.RenderIncludes(
位置:渲染位置。对,
showControls:正确
)
.ToString()
.替换(“,”)
.替换(“,”)
};
}
很明显,这里有一种去除硬编码的
标签的方法

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


这是一种“正确”的方法,还是有更好的方法?

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

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

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

$.load(“#分析器”、“api/分析器”);

请澄清:您的解决方案可行,但您需要确认您一直在遵循最佳实践吗?@KirkWoll是的。因为没有太多关于profiler的文档,我想知道我是否忽略了现有的解决方案。最坏的情况下,这个问题可以为将来的web搜索提供一些文档。如果这是“最好”的方式,我可能会提交一个补丁,这样我就不必做我的
.replace()
黑客攻击,并使之成为真正的“官方”方式。我有同样的问题。你还在这样做吗?应该开着吗?
<div id="profiler"></div>
<script type="text/javascript">
  $.load("#profiler","api/profiler");
</script>