修改 得到了答案here
所以我想查看MiniProfiler来解决一些性能问题。 在将其用于生产代码之前,我想尝试使用样本,然后继续创建MVC 5应用程序。这是使用模板创建的简单的vanilla应用程序。
在HomeController的Index()方法中添加了此代码:
var profiler = MiniProfiler.Current;
using (profiler.Step("Set page title"))
{
ViewBag.Title = "Home Page";
}
using (profiler.Step("Doing complex stuff"))
{
using (profiler.Step("Step A"))
{ // something more interesting here
Thread.Sleep(100);
}
using (profiler.Step("Step B"))
{ // and here
Thread.Sleep(250);
}
}
return View();
在_Layout:
中的jquery包下面添加了这一行@Scripts.Render("~/bundles/jquery")
@StackExchange.Profiling.MiniProfiler.RenderIncludes()
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)
跑完应用程序。 什么都没有出现。没有剖析,没有。
我错过了什么?
问候。
答案 0 :(得分:29)
这是我在Mini ASP.NET MVC5 项目中使用MiniProfiler所必须做的事情:
安装 MiniProfiler 和 MiniProfiler.MVC4 NuGet包(MVC4包支持MVC5)
将以下内容添加到Global.asax中的Application_Start()
:
protected void Application_Start()
{
...
// Setup profiler for Controllers via a Global ActionFilter
GlobalFilters.Filters.Add(new ProfilingActionFilter());
// initialize automatic view profiling
var copy = ViewEngines.Engines.ToList();
ViewEngines.Engines.Clear();
foreach (var item in copy)
{
ViewEngines.Engines.Add(new ProfilingViewEngine(item));
}
}
将以下内容添加到' Application_BeginRequest()'和' Application_EndRequest()',也在Global.asax:
protected void Application_BeginRequest()
{
if (Request.IsLocal)
{
MiniProfiler.Start();
}
}
protected void Application_EndRequest()
{
MiniProfiler.Stop();
}
将以下内容添加到_Layout.cshtml(</body>
标记之前):
...
@StackExchange.Profiling.MiniProfiler.RenderIncludes()
</body>
</html>
将以下内容添加到Web.config的<handlers>
部分:
<system.webServer>
...
<handlers>
...
<add name="MiniProfiler" path="mini-profiler-resources/*" verb="*"
type="System.Web.Routing.UrlRoutingModule" resourceType="Unspecified"
preCondition="integratedMode" />
...
</handlers>
</system.webServer>
这足以分析每个MVC控制器操作和视图。
在我的特定项目中,我使用的是Entity Framework 6,所以我也做了以下事情:
a)安装 MiniProfiler.EF6 包
b)在Global.asax的Application_Start()
末尾添加以下内容:
...
MiniProfilerEF6.Initialize();
}
答案 1 :(得分:5)
您还必须添加电话:
MiniProfiler.Start();
在Global.asax.cs到Application_BeginRequest事件。
和
MiniProfiler.Stop();
在Global.asax.cs到Application_EndRequest事件。