[译]Profile and debug your ASP.NET MVC app with Glimpse
原文: http://www.asp.net/mvc/overview/performance/profile-and-debug-your-aspnet-mvc-app-with-glimpse
Glimpse为ASP.NET程序提供了详细的性能、调试、诊断功能. 它在每一个页面的下面展示了关键的性能指标. 当你需要了解服务器的运行状况能让你深入到你的应用. Glimpse提供了非常多的有价值的信息我建议你在开发环境中都使用它. Fiddler 和 F-12 开发者工具 提供了一个客户端的视图, Glimpse提供一个数据来自服务端的详细视图. 下面的教程的重点集中在使用在ASP.NET MVC和EF中使用Glimpse, 当然Glimpse还有For XXX的很多包. 官方文档点这Glimpse docs. Glimpse是一个开源系统.
安装Glimpse
安装Glimpse Mvc5 和 Glimpse EF6包:
Search for Glimpse.EF
或者
PM> Install-Package Glimpse.MVC5
PM> Install-Package Glimpse.EF6
为localhost打开Glimpse功能
打开http://localhost:<port #>/glimpse.axd页面选择右上角的Turn Glimpse On按钮
现在打开localhost, Heads Up Display (HUD) 显示在页面的底部.
Glimpse HUD page 详细展示了一些耗时信息. 这些性能数据能立即告诉你问题在哪 - 在你开始测试前. 点击右下角的G出现下面一个信息面板:
在上面的图中, the Execution标签 被选中, 显示了管道中Action和Filter的时序信息.
Timeline 标签
public ActionResult Index(int? id, int? courseID, int ? eager)
{var viewModel = new InstructorIndexData();viewModel.Instructors = db.Instructors.Include(i => i.OfficeAssignment).Include(i => i.Courses.Select(c => c.Department)).OrderBy(i => i.LastName);if (id != null){ViewBag.InstructorID = id.Value;viewModel.Courses = viewModel.Instructors.Where(i => i.ID == id.Value).Single().Courses;}if (courseID != null){ViewBag.CourseID = courseID.Value;// Eager loadingif (eager != null && eager > 0){ViewBag.eagerMsg = "Eager Loading";viewModel.Enrollments = viewModel.Courses.Where(x => x.CourseID == courseID).Single().Enrollments;}else { // Explicit loadingViewBag.eagerMsg = "Explicit Loading";var selectedCourse = viewModel.Courses.Where(x => x.CourseID == courseID).Single();db.Entry(selectedCourse).Collection(x => x.Enrollments).Load();foreach (Enrollment enrollment in selectedCourse.Enrollments){db.Entry(enrollment).Reference(x => x.Student).Load();}viewModel.Enrollments = selectedCourse.Enrollments;}}return View(viewModel);
}
上面的代码允许我们传递一个参数(eager
)去显示数据. 在下面的图中, 显示了Index Action的执行情况:
在代码中我们把eager是设为1:
你可以把鼠标放在相应的事件色块中查看详细的信息:
模型绑定Model Binding
model binding选项卡 提供给我们一些信息帮助我们了解我们的表单参数是怎么绑定到模型上的或者为什么有些没有按照我们的预想绑定. 看到下面图片右边中间部分的 ? 图标没, 点击它可以到Glimpse的帮助页面.
路由
Routes选项卡帮助我们debug和了解路由情况. 在下面的图中, 产品路由被选中 (绿色的就是选中的).
路由constraints, Areas和data tokens都能显示出来. 更多信息见Glimpse Routes和Attribute Routing in ASP.NET MVC 5.
转载于:https://www.cnblogs.com/irocker/p/profile-and-debug-your-aspnet-mvc-app-with-glimpse.html
[译]Profile and debug your ASP.NET MVC app with Glimpse相关推荐
- asp.net mvc 性能测试工具 - Glimpse
Glimpse是一款.NET下的性能测试工具,支持asp.net .asp.net mvc 优势在于,不需要修改原项目任何代码,且能输出代码执行各个环节的执行时间 安装方式非常简单,通过nuget直接 ...
- 如何调试进入Asp.NET MVC源代码
调试进入Asp.NET MVC源代码内部,是学习和了解Asp.NET MVC内部机理的最佳方式,那么如何Debug到Asp.NET MVC源代码内部呢?请遵循如下的步骤: 1.http://mvc.c ...
- ASP.NET MVC与RAILS3的比较
进入后Web年代之后,MVC框架进入了快速演化的时代,Struts等垂垂老矣的老一代MVC框架因为开发效率低下而逐渐被抛弃,新一代的MVC则高举敏捷的大旗,逐渐占领市场,其中的代表有Rails (ru ...
- 【译】ASP.NET MVC 5 教程 - 4:添加模型
原文:[译]ASP.NET MVC 5 教程 - 4:添加模型 在本节中,我们将添加一些管理电影数据库的类,这些类在ASP.NET MVC 应用程序中扮演"Model"的角色. 我 ...
- 【译】使用自定义ViewHelper来简化Asp.net MVC view的开发------part1
从开发者的角度来看,创建Asp.net MVC的View是一件很爽的事,因为你可以精确控制最终生成的HTML.具有讽刺意味的是不得不写出每一行HTML代码同时也是Asp.net MVC的View中让人 ...
- 【译】Asp.net MVC 利用自定义RouteHandler来防止图片盗链 (转)
你曾经注意过在你服务器请求日志中多了很多对图片资源的请求吗?这可能是有人在他们的网站中盗链了你的图片所致,这会占用你的服务器带宽.下面这种方法可以告诉你如何在ASP.NET MVC中实现一个自定义Ro ...
- 【译】详解Asp.net MVC DropDownLists
Asp.net MVC中的DropDownLists貌似会让一开始从Asp.net Forms转过来的程序员造成不少迷惑.这篇文章讲述了为了使用DropDownLists,你需要在Asp.Net MV ...
- 【译】组织好你的Asp.Net MVC解决方案
最近,Twitter上发起了一个一个关于"你最爱的Asp.net MVC项目组织方式",我自己研究了一些组织项目文件的方法.而我现在一直喜欢用的方式是一个几句灵活性的方式,此外,这 ...
- [译]Chapter 1 - An Introduction to ASP.NET MVC(2)
原文地址:Chapter 1 - An Introduction to ASP.NET MVC Avoiding Code Smells 如果你不是很小心,软件程序很快就会变得很难对应变更.我们都曾经 ...
最新文章
- r语言 编辑 d3.js_d3.js的语言介绍
- 中国人工智能学会通讯——智能语音技术与产业应用展望 1.2 智能语音产业应用的现状和挑战...
- pagefile.sys解析
- 解决“SSL handshake failed“问题
- 开启计算机开机引导兼容模式,Intel决定2020年封禁UEFI兼容模式 将无法开启CSM来启动操作系统...
- Github 最新 AI 开源项目了解一下?
- angularJs自定义模块
- 田志刚:企业知识管理的知识传播
- linux硬盘系统安装教程图解,Linux操作系统添加安装新硬盘的方法图解
- 无法定位程序输入点 InitializeCriticalSectionEx 于动态链接库 Kernel32.dll 上 问题解决方法
- 【转】CentOS系统操作下安装相关各种软件
- 第一课:安卓开发工具Android Studio最新版本的安装
- aix显示服务器ip,AIX系统查看和设置网关和IP配置
- 软件测试流程(完整版)
- iOS下Safari自动化测试
- html 制作用户注册页面模板,注册登录页面模板
- 随机信号分析学习笔记(3)
- 从浏览器中获取headers
- redis搭建哨兵模式(哨兵模式原理)
- 频域滤波—方波变换中的沃尔什变换与哈达玛变换
热门文章
- Oracle数据同步接口,增量数据从ERP系统到本地临时表封装解决方案
- GOF23种设计模式在Java中的应用(part 2)
- 停止做这7件事,你的工作效率至少翻一倍!
- 小程序开发之各种弹出框选择框汇总
- golang协程池设计
- python画卡通皮卡丘_实现童年Pokémon,教你用Python画一只属于自己的皮卡丘
- Qt error: collect2: error: ld returned 1 exit status
- Python之 类属性和类方法
- php 调用vs2013 dll文件,vs2015 肿么添加dll文件
- java kettle 日志 log_kettle使用log4j管理输出日志