asp.net core mvc 集成miniprofiler
原文:asp.net core mvc 集成miniprofiler

asp.net core mvc 集成miniprofiler
一、环境介绍
系统:win7
IDE:Visual studio 2017
数据库:mysql 5.1
框架:asp.net core mvc+dapper
二、监控asp.net 页面
1.新建Asp.net Core Web Application,如图:
2.从nuget下载MiniProfiler.AspNetCore.Mvc 包,如图:
3.在Startup.cs中ConfigureServices方法添加如下代码:
services.AddMiniProfiler();
- 1
4.在Startup.cs中Configure方法添加如下代码:
app.UseMiniProfiler();
- 1
5.修改_ViewImports.cshtml
@using StackExchange.Profiling
@addTagHelper *, MiniProfiler.AspNetCore.Mvc
- 1
- 2
6.修改_Layout.cshtml(Shared/_Layout.cshtml)
<mini-profiler />
- 1
运行项目,查看执行效果如下:
三、监控执行的sql语句
1.从nuget下载MiniProfiler.AspNetCore包,如图:
2.修改创建数据库连接代码,如下:
_conn = new ProfiledDbConnection(new MySqlConnection(connectionString), MiniProfiler.Current);
- 1
运行项目,查看执行效果如图:
可以看出查询使用647.7ms,占用页面加载时间的43.5%,点击蓝色的647.7可以看到执行的详情,如下图:
这样我们就可以监控页面加载所执行的所有sql语句。
在实际项目中情况会比较复杂,比如:一个页面会同时存在几个或者几十个sql的执行,怎么做才能清晰展示sql执行的情况呢?我们可以使用MiniProfiler的Step方法进行分类统计。修改代码如下:
public IActionResult Index()
{
var dbSettings = _dbSettings;
var dbInstance = DapperFactory.GetInstance(dbSettings);
var dapper = dbInstance.GetDapper();
var profiler = MiniProfiler.Current;
using (profiler.Step("查看setting表数据"))
{
var query = dapper.GetList<Setting>("select * from setting");
}
using (profiler.Step("查看log表数据"))
{
var query = dapper.GetList<Log>("select * from log");
}
return View();
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
查看执行情况如图:
ps:
miniprofiler官网文档地址:https://miniprofiler.com/dotnet/
asp.net core mvc 集成miniprofiler的更多相关文章
- 在ASP.NET Core Mvc 集成MarkDown
这几天在做文章编辑,首先就想到了markdown,它比其它的都要新,而且很好用,相对于其它的html编辑器,好久不更新,要好得多,哦~对了我现在已经用上新版的Edge了,经过很多朋友测试,性能比谷歌浏 ...
- 跨平台应用集成(在ASP.NET Core MVC 应用程序中集成 Microsoft Graph)
作者:陈希章 发表于 2017年6月25日 谈一谈.NET 的跨平台 终于要写到这一篇了.跨平台的支持可以说是 Office 365 平台在设计伊始就考虑的目标.我在前面的文章已经提到过了,Micro ...
- ASP.NET CORE MVC用时分析工具MiniProfiler
ASP.NET CORE MVC用时分析工具MiniProfiler MiniProfiler(https://miniprofiler.com/)是一个轻量级且简单易用的分析工具库,它可以用来分析A ...
- ASP.NET Core MVC 模型绑定用法及原理
前言 查询了一下关于 MVC 中的模型绑定,大部分都是关于如何使用的,以及模型绑定过程中的一些用法和概念,很少有关于模型绑定的内部机制实现的文章,本文就来讲解一下在 ASP.NET Core MVC ...
- 基于 Asp.Net Core MVC 的 Angular4 SSR 英雄指南
为啥有这篇文章 在之前,类似 Angular.React.Vue 之类的前端框架的一个痛点就是无法在服务端提前把网页内容写入到网页中再发回浏览器,这给网站的 SEO 增加了不少困难,因为爬虫爬到的页面 ...
- 在 ASP.NET Core 中集成 Skywalking APM
前言 大家好,今天给大家介绍一下如何在 ASP.NET Core 项目中集成 Skywalking,Skywalking 是 Apache 基金会下面的一个开源 APM 项目,有些同学可能会 APM ...
- ASP.NET Core 入门教程 2、使用ASP.NET Core MVC框架构建Web应用
一.前言 1.本文主要内容 使用dotnet cli创建基于解决方案(sln+csproj)的项目 使用Visual Studio Code开发基于解决方案(sln+csproj)的项目 Visual ...
- 如何简单的在 ASP.NET Core 中集成 JWT 认证?
前情提要:ASP.NET Core 使用 JWT 搭建分布式无状态身份验证系统 文章超长预警(1万字以上),不想看全部实现过程的同学可以直接跳转到末尾查看成果或者一键安装相关的 nuget 包 自上一 ...
- ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 02. Web Host 的默认配置
视频地址: https://www.bilibili.com/video/av38392956/?p=2 语雀 https://www.yuque.com/yuejiangliu/dotnet/ixt ...
随机推荐
- There is already an open DataReader associated with this Command which must be closed first
通常出现在嵌套查询数据库(比如在一个qry的遍历时,又进行了数据库查询) 通过在连接字符串中允许MARS可以轻松解决这个问题. 将MultipleActiveResultSets = true添加到连 ...
- 浅析Volatile关键字
浅析Volatile关键字 在java中线程并发中,线程之间通信方式分为两种:共享内存和消息传递.共享内存指的是多个线程之间共享内存的属性状态:消息传递指的是线程之间发送信息来通信.在介绍volati ...
- Linux之基础系统优化
Linux基础系统优化 >>> https://www.cnblogs.com/pyyu/p/9355477.html Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命 ...
- 网络编程 TCP协议:三次握手,四次回收,反馈机制 socket套接字通信 粘包问题与解决方法
TCP协议:传输协议,基于端口工作 三次握手,四次挥手 TCP协议建立双向通道. 三次握手, 建连接: 1:客户端向服务端发送建立连接的请求 2:服务端返回收到请求的信息给客户端,并且发送往客户端建立 ...
- lynis安装和扫描Linux的安全漏洞
今天客户的服务器出了点问题需要排查具体的原因,在德国朋友的建议下用Lynis进行扫描,Lynis是Linux系统中的审计工具,能够对Linux系统的安全进行检测,在对系统进行扫描检测后,会生成安全报告 ...
- MySQL 学习网站
[大型网站] CSDN论坛MySQL版块 https://bbs.csdn.net/forums/MySQL MySlide搜索MySQL https://myslide.cn/slides/1758 ...
- Resource Site
GameDevMarket.net Collection of Music, Sound effects (sfx), 2D/3D/GUI Art. http://gaurav.munjal.us/U ...
- 仿照addCleanup 在unittest中清理addSetupclass资源
addCleanup的用例这里不介绍了,可以看我的另一编文章: python unittest框架中addCleanup函数详解 但如果有下面这种场景,还是会遗留大批理资源 在setUpClass注入 ...
- 记录Windows下文件操作记录
https://blog.csdn.net/huashuolin001/article/details/73863324
- javascript中 encodeURIComponent() 与 encodeURI() 的区别
前言:js 中仅有的几个全局函数中,有两个全局函数可以用来编码url 字符串. 一.encodeURIComponent() 将转义用于分隔 URI 各个部分的标点符号 ,也就是可以编码 " ...