编辑
得到答案 here
得到答案 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 bundle下面添加了这一行:
@Scripts.Render("~/bundles/jquery") @StackExchange.Profiling.MiniProfiler.RenderIncludes() @Scripts.Render("~/bundles/bootstrap") @RenderSection("scripts",required: false)
把应用程序
没有什么出现没有档案,没有.
我失踪了什么
问候.
解决方法
这是我必须做的,以使MiniProfiler在我的ASP.NET MVC5项目中工作:
>安装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>
>将以下内容添加到< handlers>部分Web.config:
<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(); }