日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

采用MiniProfiler监控EF与.NET MVC项目

發布時間:2023/12/4 asp.net 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 采用MiniProfiler监控EF与.NET MVC项目 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天來說說EF與MVC項目的性能檢測和監控,相對本篇文章,更推薦大家使用另一個類似組件?NanoProfiler - 適合生產環境的性能監控類庫 之 基本功能篇

首先,先介紹一下今天我們使用的工具吧.

MiniProfiler~

這個東西的介紹如下:

MVC MiniProfiler是Stack Overflow團隊設計的一款對ASP.NET MVC的性能分析的小程序。可以對一個頁面本身,及該頁面通過直接引用、Ajax、Iframe形式訪問的其它頁面進行監控,監控內容包括數據庫內容,并可以顯示數據庫訪問的SQL(支持EF、EF CodeFirst等 )。并且以很友好的方式展現在頁面上。

該Profiler的一個特別有用的功能是它與數據庫框架的集成。除了.NET原生的 DbConnection類,profiler還內置了對實體框架(Entity Framework)以及LINQ to SQL的支持。任何執行的Step都會包括當時查詢的次數和所花費的時間。為了檢測常見的錯誤,如N+1反模式,profiler將檢測僅有參數值存在差 異的多個查詢。

MiniProfiler是以Apache License V2.0協議發布的,你可以在NuGet找到。配置及使用可以看這里:http://code.google.com/p/mvc-mini-profiler

為建立快速的網站黃金參考標準,雅虎2007年為網站提高速度的13個簡易規則。

以上這一段是照抄的張善友的博客,原文地址:http://www.cnblogs.com/shanyou/archive/2012/04/03/2430977.html

當然 國內百度也能百度出一大把的教程,但是教程都比較老與現在的新版本還是差距很大,而且博文中講的并不是很詳細,所以本屌就來詳細的講講吧..

?

本文采用的環境與技術

系統:WIN7

數據庫:SQL Server2008

相關技術:MVC5+EF6.1.3

第一章:開始監控

首先,明確一下本博文的目標,監控EF的Sql和執行時間,監控MVC頁面的執行時間

那么我們開始.

第一步,從NuGet上下載所需要的包,下載內容如圖:

MiniProfiler核心(所有的MiniProfiler相關資源都需要先有他)

?

這里需要注意,新版本的MiniProfiler.EF是需要根據你的EF版本來下載的,分為MiniProfiler.EF6,MiniProfiler.EF5,MiniProfiler.EF(EF4以下)三個版本

根據你的EF版本自行下載對應的包.

MiniProfiler.MVC4(注:這里的MVC4是可以分析MVC4,5兩個版本的,使用MVC3的同學請自行下載MiniProfiler.MVC3)

至此,我們所需要安裝的程序包就全部OK了,

下面我們開始監控:

首先,給你的Global.asax文件中加入:

protected void Application_BeginRequest(){ ? ? ? ? ?
? ? ? ? ??
if (Request.IsLocal)//這里是允許本地訪問啟動監控,可不寫 ? ? ? ? ? ?{MiniProfiler.Start();}} ? ? ? ?protected void Application_EndRequest(){MiniProfiler.Stop();}


然后找到你需要監控的頁面,在頁面中加入:

@using StackExchange.Profiling; @MiniProfiler.RenderIncludes();

當然,我們一般是想監控所有的頁,所以我推薦加在你的布局頁(_Layout)中,比如以下這種結構:


<html><head>@using StackExchange.Profiling;</head><body>@RenderBody()@MiniProfiler.RenderIncludes();</body></html>


然后在配置文件中加入(注意,這里很重要):


<system.webServer><handlers><add name="MiniProfiler" path="mini-profiler-resources/*" verb="*" type="System.Web.Routing.UrlRoutingModule" resourceType="Unspecified" preCondition="integratedMode" /></handlers></system.webServer>?

這樣,我們的基礎監控就已經完成了,我們來看看效果.

?

第二章:監控EF,并對某次操作進行針對性監控

首先我們在Global.asax文件中添加代碼如下: ?

protected void Application_Start()

? ? ? ?{....StackExchange.Profiling.EntityFramework6.MiniProfilerEF6.Initialize();....}

?

因為這是一個簡單的demo,所以我們隨意找一個Controller,寫一些EF的查詢,代碼如下:

public class HomeController : Controller{ ? ? ? ?public ActionResult Index(){ ? ? ? ? ? using (StudentInfoEntities us = new StudentInfoEntities()){ViewBag.data = us.LogData.Where(a => 1 == 1).ToList();} ? ? ? ? ? ?return View();} }

我們來看看效果.

可以看出來,這次查詢用了56.2MS,占用整個頁面的加載時間71%的比例.,點擊藍色的56.2可以看到詳細的SQL語句,如下:

這樣,我們就可以隨時監控到頁面中EF所使用的SQL語句并進行分析.

針對性監控(重要)

當然,這只是簡單的操作,我們在分析的過程中肯定會碰到詭異,或者后臺代碼更復雜的情況(比如一個頁面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();} }

得到監控效果如下:

這樣,我們就可以根據我們的需要來詳細的跟蹤某一次EF操作的結果了.

?

第三章:監控的權限(給管理員分配監控的權限)

在實際的項目開發中,我們不可能對所有的用戶全部開放監控的權限,所以我們要對他進行顯示的控制.

在MiniProfiler中,提供了兩個委托,如下:

?MiniProfiler.Settings.Results_Authorize //配置監控的權限

MiniProfiler.Settings.Results_List_Authorize //配置歷史信息監控的權限(在~/mini-profiler-resources/results-index中可以查看最近100次的請求分析)

這里我們簡單的做一下權限控制,

我們在Global.asax文件中添加代碼如下:

protected void Application_Start(){....MiniProfiler.Settings.Results_Authorize = Request =>{ ? ? ? ? ? ? ? ?string name = Request.Cookies["name"] == null ? "" : Request.Cookies["name"].Value; ? ? ? ? ? ? ? ?if (name.Equals("admin")) ? ? ? ? ? ? ? ? ? ?return true; ? ? ? ? ? ? ? ?elsereturn false;};StackExchange.Profiling.EntityFramework6.MiniProfilerEF6.Initialize();}

這樣就只有cookie的name屬性為admin的用戶才能有監控顯示了

?

效果如下(我們可以看到,當cookie中的name等于admin的時候才會有監控的顯示):

?

寫在最后

至此,文章就全部結束了,歡迎各位大神拍磚.

原文地址:http://www.cnblogs.com/GuZhenYin/p/5408632.html


.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注

贊賞

人贊賞

總結

以上是生活随笔為你收集整理的采用MiniProfiler监控EF与.NET MVC项目的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 青青草官网 | 四虎最新域名 | 午夜寂寞影院在线观看 | 亚洲蜜桃在线 | 有奶水的迷人少妇 | 穿情趣内衣被c到高潮视频 欧美性猛交xxxx黑人猛交 | 国产精品精 | 美女黄色一级视频 | 欧美日韩色综合 | 天天操天天干视频 | 日本女人毛茸茸 | 天天狠天天插 | 亚洲精品男人的天堂 | 在线观看网站av | 丰满大乳露双乳呻吟 | 亚洲AV无码国产精品国产剧情 | 一区二区不卡在线 | 污片视频在线观看 | 国产一区二区免费 | 亚洲欧美强伦一区二区 | 欧美日韩黄色一区二区 | 爱情岛论坛亚洲品质自拍视频 | 国产精品蜜臀av | 欧美涩涩涩 | 免费毛片一级 | 国产91绿帽单男绿奴 | 无码人妻丰满熟妇精品区 | 亚洲精品一区二区三区中文字幕 | 北条麻妃二三区 | 亚洲免费在线观看av | 99久久免费国产精精品 | 91精品国产亚洲 | 理伦毛片 | 亚洲大色 | 亚洲一区二区影视 | 亚洲一区二区在线免费 | 亚洲视频手机在线观看 | 婷婷久久五月天 | 日韩在线欧美在线 | 五月婷婷六月天 | 久久精品中文 | 青青青在线观看视频 | 日本美女在线 | 婷婷一区二区三区四区 | 国产精品久久一区二区三区动 | 色婷婷在线播放 | 美女靠逼app | 午夜一区二区三区四区 | 国产视频在线观看一区 | 小草av在线 | 日本国产一区二区三区 | 中字幕视频在线永久在线观看免费 | 美女干b视频 | 撕开少妇裙子猛然进入 | 免费看美女被靠到爽的视频 | 特黄一区二区三区 | 成人午夜激情网 | 亚洲精品久久久久av无码 | 国产精品五月天 | 天天看夜夜看 | 美女黄色一级片 | 三级黄网| 国产乱码在线观看 | 777精品伊人久久久久大香线蕉 | 欧美高h视频 | 久久久久99精品成人片直播 | 91精品国产aⅴ一区二区 | 国产在线色视频 | 亚洲国产一区二区三区a毛片 | 中文字幕日韩一区 | 高跟肉丝丝袜呻吟啪啪网站av | 老司机精品福利视频 | 天堂av在线中文 | 伦在线 | 亚洲三级影视 | 视频一区国产精品 | 中文字幕人妻伦伦 | 台湾佬美性中文网 | 国产欧美日韩一区二区三区 | 少妇高潮灌满白浆毛片免费看 | 1024欧美| 毛片无遮挡高清免费观看 | 秋霞中文字幕 | 国产精品999 | 蜜桃91麻豆精品一二三区 | 中文字幕一区二区精品 | 久久久精品免费观看 | 欧美少妇一区二区三区 | 久久免费视频一区二区 | 亚洲精品鲁一鲁一区二区三区 | 美女脱了内裤喂我喝尿视频 | 96精品在线| 国产成人精品一区二区三区在线观看 | 久久久久久久久久久久久女过产乱 | 2020亚洲天堂 | 国产极品网站 | 亚洲色图50p | 中文字幕日韩国产 | 2021天天干 |