asp.net-mvc-3 – 如何使用MiniProfiler与单页Web应用程序/ REST后端?

前端之家收集整理的这篇文章主要介绍了asp.net-mvc-3 – 如何使用MiniProfiler与单页Web应用程序/ REST后端?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个单一的页面JavaScript应用程序(使用JavascriptMvc完成)和后端与REST服务构建在ASP.NET MVC3之上(使用NServiceMVC完成)。

REST服务已安装并运行MiniProfiler,X-MiniProfiler-Ids标头随每个AJAX请求一起回来。我实际上有运行和工作的微型计算机,但我找不到任何信息,所以我不知道我是否正确的做法。

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

我目前正在做的是这样的:

在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>","") 
        };
    }

显然,这里有一个黑客去掉硬编码的< script>标签

除此之外,从MVC的其余部分,分析器的使用方式与往常一样。当您在应用程序中执行导致REST调用发生的操作时,miniprofiler会在拐角处显示。使用showControls:true参数在这里也是非常有用的,所以清除按钮显示,因为否则你只需要一个常量的操作列表,因为整个页面基本上不会刷新。

这是否是“正确”的做法,还是有更好的方法

解决方法

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

为什么不完全避免这些黑客,并使用ajax请求加载分析器?在任一情况下,无论是ajax还是嵌入式脚本,通过回调插入分析器的行为会影响分析的结果。

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

猜你在找的asp.Net相关文章