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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何使用MiniProfiler(附最新版MiniProfiler使用心得)

發布時間:2024/4/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何使用MiniProfiler(附最新版MiniProfiler使用心得) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MiniProfiler這個工具早就久仰大名,不過之前一直沒有動力去用,正好最近手上有個ASP.NET MVC的項目,正好拿來試試手,下面是使用最新的4.0.138版本的心得體會以及踩到一些小坑的解決過程,希望能對大家有所幫助。

?開發環境如下:

Visual?Studio 2017: 15.8.6

MiniProfiler家族:4.0.138

項目框架:4.6.1

注意:MiniProfiler?4.0.138版本要求項目框架不能低于4.6.1

在使用過程中主要參考了以下資料:

使用MiniProfiler給Asp.net MVC和Entity Framework號脈(附源碼)

MiniProfiler工具介紹(監控EF生成的SQL語句)--EF,迷你監控器,哈哈哈

MiniProfiler官方文檔(不過官方文檔不夠完善,有些坑還是靠著上面的資料解決的)

下面開始吧!

寫在前面:

0、建議每做一步都編譯下項目,確定一切OK!

1、首先從Nuget安裝?MiniProfiler.Mvc5?包,順帶會把?MiniProfilerMiniProfiler.Shared?包也一并裝上。

2、按照官方文檔的說明,編輯項目的Global.asax文檔。

注意:這里會遇到第一個小坑,官方文檔里面居然有typo錯誤

.AddViewPofiling() // Add MVC view profiling (you want this)  錯誤 .AddViewProfiling() // Add MVC view profiling (you want this)  正確,函數少了一個r

注意:增加相應的命名空間

using StackExchange.Profiling; using StackExchange.Profiling.Mvc;

3、在布局頁當中加入以下代碼:

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

注意:在上述的第二份資料中代碼是這樣:

@MiniProfiler.RenderIncludes()  

但最新4.0版本的MiniProfiler應該是有了改動,關于RenderIncludes函數有更多參數可用,具體可以參考官方的ASP.NET MVC示例

小提示:MiniProfiler是可以隱藏的,可以使用鍵盤的ALT+P來切換顯示。

4、修改配置文件Web.config,在節點<handlers>中加上如下配置?

<add name="MiniProfiler" path="profiler/*" verb="*" type="System.Web.Routing.UrlRoutingModule" resourceType="Unspecified" preCondition="integratedMode" />

注意:這里的path有可能會有變化,因為RenderIncludes函數會生成類似于下面這樣的腳本代碼,需要根據生成的文件路徑進行調整,上面的兩篇文檔使用的是MiniProfiler 2.0及3.0版本,所以這里與上面的資料中的路徑不同,

如果將來遇到MiniProfiler不能生效的情況,可以通過Chrome的開發者工具查看Console上的提示來確認這里是否有錯誤

<script async="async" id="mini-profiler" src="/profiler/includes.min.js?v=4.0.138+gcc91adf599" data-version="4.0.138+gcc91adf599" data-path="/profiler/" data-current-id="2a324576-7a4e-41d6-abef-bcc82e205080" data-ids="4388d9aa-5b59-405f-b27f-6a05959910fb,2a324576-7a4e-41d6-abef-bcc82e205080" data-position="Right" data-authorized="true" data-max-traces="10" data-toggle-shortcut="Alt+P" data-trivial-milliseconds="2.0" data-ignored-duplicate-execute-types="Open,OpenAsync,Close,CloseAsync"></script>

更新

?不需要添加handlers配置,使用runAllManagedModulesForAllRequests即可

<system.webServer><validation validateIntegratedModeConfiguration="false" /><modules runAllManagedModulesForAllRequests="true" /><!--<handlers><add name="MiniProfiler" path="profiler/*" verb="*" type="System.Web.Routing.UrlRoutingModule" resourceType="Unspecified" preCondition="integratedMode" /></handlers>--></system.webServer>

?

5、到這里按理說就能看到頁面的右上角的MiniProfiler面板了,完全展開大概會像這樣:

可以看到整個頁面的加載時間和流程中各個步驟的耗時。

6、不過對于真正的項目來說,上面這些數據還是不夠的,我們還需要對SQL語句進行調優,下面來看看怎么做。

首先我們需要封裝一個可以返回DbConnection的函數來讓profile的代碼能夠注入到項目代碼中,對于一個結構良好的項目來說這完全不是問題

提示:因為使用的項目是直接使用原生ADO.NET訪問數據,所以需要這個步驟,如果是使用EF6的話,只需要添加?MiniProfiler.EF6?的引用,不需要任何配置就可以在面板上看到EF生成的SQL語句。

public DbConnection GetConnection() {DbConnection connection = new System.Data.SqlClient.SqlConnection("這里是數據庫的連接字符串");return new StackExchange.Profiling.Data.ProfiledDbConnection(connection, MiniProfiler.Current); }

然后在實際查詢數據的代碼周圍使用如下代碼:

var profiler = MiniProfiler.Current;using (profiler.Step("查詢數據")){var sqlSelect = string.Format("SELECT * FROM table");var data = SqlHelper.Query(sqlSelect);}

然后就可以看到類似這樣的效果:

?

(以上截圖來自微軟官方ASP.NET MVC教程項目,可以很直觀的看到EF生成的代碼)

一些在后面的話

1、資料中提到的同類的NanoProfiler,還有Glimpse,不過Glimpse已經不再活躍了,下面有空的時候準備再看下NanoProfiler。

2、MiniProfiler的源代碼及示例項目運行的時候會提示以下錯誤,查了下這個錯誤看起來和.NET Core有關系,但是沒有找到如何解決的辦法,如果有朋友能告知的話,感激不盡。

---------------------------
Microsoft Visual Studio
---------------------------
無法運行項目。"RunCommand" 屬性未定義。
---------------------------
確定
---------------------------

轉載于:https://www.cnblogs.com/s5689412/p/9809872.html

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的如何使用MiniProfiler(附最新版MiniProfiler使用心得)的全部內容,希望文章能夠幫你解決所遇到的問題。

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