采用MiniProfiler监控EF与.NET MVC项目
2017-02-06 17:22
381 查看
1.引入MiniProfile(MiniProfiler.dll,MiniProfiler.EntityFramework.dll,MiniProfiler.Mvc.dll)2.Global.asax文件中加入两个方法:
当然,这只是简单的操作,我们在分析的过程中肯定会碰到诡异,或者后台代码更复杂的情况(比如一个页面10个查询),这个时候页面上的监控就会很混乱,不方便读,我们就需要进行针对性的监控.我们把刚刚的代码修改如下(这里我们进行两次查询操作,用MiniProfiler进行分类):
在实际的项目开发中,我们不可能对所有的用户全部开放监控的权限,所以我们要对他进行显示的控制.在MiniProfiler中,提供了两个委托,如下:MiniProfiler.Settings.Results_Authorize //配置监控的权限MiniProfiler.Settings.Results_List_Authorize //配置历史信息监控的权限(在~/mini-profiler-resources/results-index中可以查看最近100次的请求分析)这里我们简单的做一下权限控制,我们在Global.asax文件中添加代码如下:
protected void Application_BeginRequest() { if (Request.IsLocal) //这里是允许本地访问启动监控,可不写 { MiniProfiler.Start(); } } protected void Application_EndRequest() { MiniProfiler.Stop(); }在Application_Start方法中加入:
MiniProfilerEF.Initialize();//监控到页面中EF所使用的SQL语句并进行分析.
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); MiniProfilerEF.Initialize();//监控到页面中EF所使用的SQL语句并进行分析. }3.然后找到你需要监控的页面,在页面中加入:
@using StackExchange.Profiling; @MiniProfiler.RenderIncludes(); 当然,我们一般是想监控所有的页,所以我推荐加在你的布局页(_Layout)中,比如以下这种结构:
<html> <head> @using StackExchange.Profiling; </head> <body> @RenderBody() @MiniProfiler.RenderIncludes(); </body> </html>4.然后在配置文件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>5.这样,我们的基础监控就已经完成了,我们来看看效果.
6.针对性监控(重要)
当然,这只是简单的操作,我们在分析的过程中肯定会碰到诡异,或者后台代码更复杂的情况(比如一个页面10个查询),这个时候页面上的监控就会很混乱,不方便读,我们就需要进行针对性的监控.我们把刚刚的代码修改如下(这里我们进行两次查询操作,用MiniProfiler进行分类):
public class HomeController : Controller { public ActionResult Index() { var profiler = MiniProfiler.Current; using (profiler.Step("查询数据LogData的数据")) { using (StudentInfoEntities us = new StudentInfoEntities()) { ViewBag.data = us.LogData.Where(a => 1 == 1).ToList(); } } using (profiler.Step("查询数据LogOperate的数据")) { using (StudentInfoEntities us = new StudentInfoEntities()) { ViewBag.data = us.LogOperate.Where(a => 1 == 1).ToList(); } } return View(); } }得到监控效果如上面的图
7.监控的权限(给管理员分配监控的权限)
在实际的项目开发中,我们不可能对所有的用户全部开放监控的权限,所以我们要对他进行显示的控制.在MiniProfiler中,提供了两个委托,如下:MiniProfiler.Settings.Results_Authorize //配置监控的权限MiniProfiler.Settings.Results_List_Authorize //配置历史信息监控的权限(在~/mini-profiler-resources/results-index中可以查看最近100次的请求分析)这里我们简单的做一下权限控制,我们在Global.asax文件中添加代码如下:
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); #region 权限控制 MiniProfiler.Settings.Results_Authorize = Request => { string name = Request.Cookies["name"] == null ? "" : Request.Cookies["name"].Value; if (name.Equals("admin")) return true; else return false; };//配置监控的权限 #endregion MiniProfilerEF.Initialize();//监控到页面中EF所使用的SQL语句并进行分析. }这样就只有cookie的name属性为admin的用户才能有监控显示了效果如下(我们可以看到,当cookie中的name等于admin的时候才会有监控的显示):
相关文章推荐
- 采用MiniProfiler监控EF与.NET MVC项目
- 采用MiniProfiler监控EF与.NET MVC项目(Entity Framework 延伸系列1)
- 采用MiniProfiler监控EF与.NET MVC项目(Entity Framework 延伸系列1)
- 1.采用MiniProfiler监控EF与.NET MVC项目(Entity Framework 延伸系列1)
- 采用MiniProfiler监控EF与.NET MVC项目(Entity Framework 延伸系列1)(转)
- 采用MiniProfiler监控EF与.NET MVC项目(Entity Framework 延伸系列1)
- MiniProfiler监控EF与.NET MVC项目
- 使用 MvcMiniProfiler 监控EF 4.1 with MySQL Provider
- asp.net mvc ef 性能监控调试工具 MiniProfiler
- EF框架 监控小工具 MiniProfiler
- MVC教程--MiniProfiler.EF监控调试MVC和EF的性能
- MiniProfiler工具介绍(监控EF生成的SQL语句)--EF,迷你监控器,哈哈哈
- 采用Opserver来监控你的ASP.NET项目系列(三、监控你的服务器状态)
- 采用Opserver来监控你的ASP.NET项目系列(一、Opserver监控的简介与平台搭建)
- MiniProfiler.EF6监控调试MVC5和EF6的性能
- ABP使用Miniprofiler监测EF
- 采用Opserver来监控你的ASP.NET项目系列(二、监控SQL Server与Asp.Net项目)
- Miniprofiler在普通net项目中的使用
- MiniProfiler(MiniProfiler.EF6监控调试MVC5和EF6的性能)
- 使用MiniProfiler跟踪MVC + EF + Bootstrap 2 权限管理系统的性能消耗