欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

ASP.NET?Core使用MiniProfiler分析應(yīng)用

 更新時(shí)間:2022年02月17日 08:40:23   作者:Run2948  
這篇文章介紹了ASP.NET?Core使用MiniProfiler分析應(yīng)用的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

MiniProfiler(https://miniprofiler.com/)是一個(gè)輕量級(jí)且簡(jiǎn)單易用的分析工具庫(kù),它可以用來(lái)分析ASP.NET Core應(yīng)用。

優(yōu)點(diǎn)

針對(duì)ASP.NET Core MVC應(yīng)用,使用MiniProfiler的優(yōu)點(diǎn)是:它會(huì)把結(jié)果直接放在頁(yè)面的左下角,隨時(shí)可以點(diǎn)擊查看;這樣的話就可以感知出你的程序運(yùn)行的怎么樣;同時(shí)這也意味著,在你開(kāi)發(fā)新功能的同時(shí),可以很快速的得到反饋。

一、安裝配置MiniProfiler

在現(xiàn)有的ASP.NET Core MVC項(xiàng)目里,通過(guò)Nuget安裝MiniProfiler :

Install-Package MiniProfiler.AspNetCore.Mvc

當(dāng)然也可以通過(guò)Nuget Package Manager可視化工具安裝

接下來(lái)配置MiniProfiler,總共分三步:

第一步,來(lái)到Startup.csConfigureServices方法里,添加services.AddMiniProfiler();

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.Configure<CookiePolicyOptions>(options =>
        {
            // This lambda determines whether user consent for non-essential cookies is needed for a given request.
            options.CheckConsentNeeded = context => true;
            options.MinimumSameSitePolicy = SameSiteMode.None;
        });


        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

        // 當(dāng)然這個(gè)方法還可以添加一個(gè)lambda表達(dá)式作為參數(shù),從而做一些自定義的配置:
        services.AddMiniProfiler(options =>
        {
            // 設(shè)定彈出窗口的位置是左下角
            options.PopupRenderPosition = RenderPosition.BottomLeft;
            // 設(shè)定在彈出的明細(xì)窗口里會(huì)顯式Time With Children這列
            options.PopupShowTimeWithChildren = true;
        });
    }

第二步,來(lái)到來(lái)到Startup.csConfigure方法里,添加app.UseMiniProfiler();

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        ...

        // 最重要的一點(diǎn)是就是配置中間件在管道中的位置,一定要把它放在UseMvc()方法之前。 
        app.UseMiniProfiler();

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });
    }

第三步,將MiniProfilerTag Helper放到頁(yè)面上

  • _ViewImports 頁(yè)面引入 MiniProfiler 的 Tag Helper :
    ...

    @using StackExchange.Profiling

    ...
    @addTagHelper *, MiniProfiler.AspNetCore.Mvc
  • 將 MiniProfiler 的Tag Helper 放入 _Layout.cshtml 中:
    ...

    <footer class="border-top footer text-muted">
        <div class="container">
            &copy; 2019 - MiniProfilerCoreDemo - <a asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
        </div>
    </footer>

    @* 其實(shí)放在頁(yè)面的任意地方都應(yīng)該可以,但是由于它會(huì)加載一些腳本文件,所以建議放在footer下面: *@@* 其實(shí)放在頁(yè)面的任意地方都應(yīng)該可以,但是由于它會(huì)加載一些腳本文件,所以建議放在footer下面: *@
    <mini-profiler />

    <environment include="Development">
        <script src="~/lib/jquery/dist/jquery.js"></script>
        <script src="~/lib/bootstrap/dist/js/bootstrap.bundle.js"></script>
    </environment>

    ...

    @RenderSection("Scripts", required: false)
</body>
</html>

運(yùn)行應(yīng)用,可以看到左下角就是MiniProfiler:

點(diǎn)擊它之后會(huì)彈出窗口,里面有每個(gè)步驟具體的耗用時(shí)間。

二、MiniProfiler 具體使用

分析局部代碼

前面的例子里,我們使用MiniProfiler分析了頁(yè)面整個(gè)流程的時(shí)間。而MiniProfiler也可以用來(lái)分析一段代碼所耗用的時(shí)間??蠢樱?/p>

    public async Task<IActionResult> Index()
    {
#if !DEBUG
        // 這里我們使用了using語(yǔ)句,里面使用了 MiniProfiler 類的 Current 屬性,在該屬性上面有一個(gè)Step()方法,
        // 它可以用來(lái)分析using語(yǔ)句里面的代碼,在Step方法里,要提供一個(gè)具有描述性的名稱來(lái)表示該段代碼做的是什么動(dòng)作,這個(gè)名稱會(huì)顯示在結(jié)果里。
        using (MiniProfiler.Current.Step("計(jì)算第一步"))
        {
            var users = await _context.Users.ToListAsync();
            return View(users);
        }
#else
        // 通常,我會(huì)使用 using 語(yǔ)句塊來(lái)嵌套著使用

        using(MiniProfiler.Current.Step("第1步"))
        {

            // ... 相關(guān)操作
            Thread.Sleep(30);

            using(MiniProfiler.Current.Step("第1.1步"))
            {
                // ... 相關(guān)操作
                Thread.Sleep(30);
            }

            using(MiniProfiler.Current.Step("第1.2步"))
            {
                // ... 相關(guān)操作
                Thread.Sleep(30);
            }
       }

        // 但是如果你只想分析一句話,那么使用using語(yǔ)句就顯得太麻煩了,這種情況下可以使用 Inline() 方法:
        var users = await MiniProfiler.Current.Inline(async () => await _context.Users.ToListAsync(), "計(jì)算第一步");
        return View(users);
#endif
    }
  • 使用 using 語(yǔ)句塊嵌套結(jié)果展示:

  • 使用 Inline() 方法結(jié)果展示:

自定義分析 CustomTiming

有時(shí)候,分析一些例如請(qǐng)求外部動(dòng)作的時(shí)候,上面講的做法可能不太靈光,這里我們就可以使用CustomTime()方法

    public async Task<IActionResult> Privacy()
    {
        // 這個(gè)例子里,我們使用 MiniProfiler.Current.CustomTiming() 方法。
        //  第一個(gè)參數(shù)是一個(gè)用于分類的字符串,這里我用的是http請(qǐng)求,所以寫了http;
        //  第二個(gè)參數(shù)是命令字符串,這里我用不上,暫時(shí)留空;
        //  第三個(gè)參數(shù)是執(zhí)行類型,這里我用的是Get請(qǐng)求,所以寫了GET;
        using (CustomTiming timing = MiniProfiler.Current.CustomTiming("http", string.Empty, "GET"))
        {
            var url = "http://27.24.159.155";
            var httpClient = new HttpClient
            {
                BaseAddress = new Uri(url)
            };
            httpClient.DefaultRequestHeaders.Clear();
            httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            var response = await httpClient.GetAsync("/system/resource/code/news/click/dynclicks.jsp?clickid=1478&owner=1220352265&clicktype=wbnews");

            timing.CommandString = $"URL:{url}\n\r Response Code:{response.StatusCode}";

            if (!response.IsSuccessStatusCode)
            {
                throw new Exception("Error fetching data from API");
            }

            var clickTimes = await response.Content.ReadAsStringAsync();

            ViewData["clickTimes"] = clickTimes;
        }

        return View();
    }
  • 運(yùn)行程序,可以看到窗口的右側(cè)出現(xiàn)了http這一列:

  • 點(diǎn)擊 http 所在列的153.1 (1),這就是使用CustomTiming分析的那段代碼,它請(qǐng)求的URL和返回碼都顯示了出來(lái)。

三、案例源碼:

MiniProfilerCoreDemo

到此這篇關(guān)于ASP.NET Core使用MiniProfiler分析應(yīng)用的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Visual Studio 2017安裝失敗的解決方法

    Visual Studio 2017安裝失敗的解決方法

    這篇文章主要為大家詳細(xì)介紹了Visual Studio 2017安裝失敗的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • 一文帶你了解.Net基于Threading.Mutex實(shí)現(xiàn)互斥鎖

    一文帶你了解.Net基于Threading.Mutex實(shí)現(xiàn)互斥鎖

    互斥鎖是一個(gè)互斥的同步對(duì)象,意味著同一時(shí)間有且僅有一個(gè)線程可以獲取它。這篇文章主要介紹了一文帶你了解.Net基于Threading.Mutex實(shí)現(xiàn)互斥鎖,感興趣的可以了解一下
    2021-06-06
  • LazyCaptcha自定義隨機(jī)驗(yàn)證碼和字體的示例詳解

    LazyCaptcha自定義隨機(jī)驗(yàn)證碼和字體的示例詳解

    LazyCaptcha是仿EasyCaptcha和SimpleCaptcha,基于.Net?Standard?2.1的圖形驗(yàn)證碼模塊,這篇文章主要介紹了LazyCaptcha自定義隨機(jī)驗(yàn)證碼和字體?,需要的朋友可以參考下
    2022-03-03
  • asp.net Javascript獲取CheckBoxList的value

    asp.net Javascript獲取CheckBoxList的value

    最近在做一個(gè)BS的小項(xiàng)目,記得自己搞asp.net的時(shí)候,還是兩年以前,大部分的東西只是有點(diǎn)印象,忘得差不多了,所以這次也算是溫習(xí)的過(guò)程吧,一邊學(xué)習(xí),一邊趕工,呵呵呵。。。。
    2009-12-12
  • 動(dòng)態(tài)加載用戶控件至DataList并為用戶控件賦值實(shí)例演示

    動(dòng)態(tài)加載用戶控件至DataList并為用戶控件賦值實(shí)例演示

    本文借用使用通用的新聞例子演示動(dòng)態(tài)加載用戶控件至DataList并為用戶控件賦值,感興趣的朋友可以了解下
    2013-01-01
  • C#實(shí)現(xiàn)把圖片下載到服務(wù)器代碼

    C#實(shí)現(xiàn)把圖片下載到服務(wù)器代碼

    本文給大家分享的是實(shí)現(xiàn)這樣一個(gè)功能,想將遠(yuǎn)程服務(wù)器的圖片下載到本地主機(jī),圖片的名稱就是數(shù)據(jù)庫(kù)的一個(gè)字段,圖片不是以二進(jìn)制的形式存儲(chǔ)在數(shù)據(jù)庫(kù)的,數(shù)據(jù)庫(kù)存儲(chǔ)的只是圖片的名詞。
    2015-11-11
  • asp.net 不用組件的URL重寫(適用于較大型項(xiàng)目)

    asp.net 不用組件的URL重寫(適用于較大型項(xiàng)目)

    網(wǎng)上很多關(guān)于url重寫的教程都推薦下載某某某組件, 我個(gè)人不喜歡這樣,即使是M$的組件也一樣,因?yàn)槲覀兏沙绦騿T的,越貼近真相越好。那么我也寫一個(gè)關(guān)于url重寫的文章,希望對(duì)和我一樣有個(gè)性的coder們有點(diǎn)幫助。
    2009-04-04
  • DropDownList添加客戶端下拉事件操作

    DropDownList添加客戶端下拉事件操作

    我們知道,DropDownList下拉框是一個(gè)服務(wù)器控件,有時(shí)候,有些朋友為了方便綁定DropDownList下拉框的選項(xiàng),但又想在DropDownList實(shí)現(xiàn)客戶端的下拉事件,那該怎么實(shí)現(xiàn)呢?
    2015-09-09
  • ASP.NET操作Excel備忘錄

    ASP.NET操作Excel備忘錄

    ASP.NET下操作Excel的一些技巧分析,需要的朋友可以參考下。
    2010-01-01
  • ASP.NET Core Kestrel 中使用 HTTPS (SSL)

    ASP.NET Core Kestrel 中使用 HTTPS (SSL)

    這篇文章主要為大家詳細(xì)介紹了ASP.NET Core Kestrel 中使用 HTTPS(SSL)的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2016-09-09

最新評(píng)論