国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ASP.NET Core如何知道一個(gè)請(qǐng)求執(zhí)行了哪些中間件?

這篇具有很好參考價(jià)值的文章主要介紹了ASP.NET Core如何知道一個(gè)請(qǐng)求執(zhí)行了哪些中間件?。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

第一步,添加Nuget包引用

需要添加兩個(gè)Nuget包分別是:Microsoft.AspNetCore.MiddlewareAnalysisMicrosoft.Extensions.DiagnosticAdapter,前者是分析記錄中間件核心代碼實(shí)現(xiàn)后者是用來接收日志輸出的,由于是用的DiagnosticSource方式記錄日志,所以需要使用DiagnosticListener對(duì)象的SubscribeWithAdapter方法來訂閱。

第二步,實(shí)現(xiàn)一個(gè)分析診斷適配器

這個(gè)適配器是為了方便我們把從DiagnosticSource接收到的日志對(duì)象輸出到控制臺(tái),具體代碼實(shí)現(xiàn)如下

    public class AnalysisDiagnosticAdapter
    {
        private readonly ILogger<AnalysisDiagnosticAdapter> _logger;
        public AnalysisDiagnosticAdapter(ILogger<AnalysisDiagnosticAdapter> logger)
        {
            _logger = logger;
        }

        [DiagnosticName("Microsoft.AspNetCore.MiddlewareAnalysis.MiddlewareStarting")]
        public void OnMiddlewareStarting(HttpContext httpContext, string name, Guid instance, long timestamp)
        {
            _logger.LogInformation($"中間件-啟動(dòng): '{name}'; Request Path: '{httpContext.Request.Path}'");
        }

        [DiagnosticName("Microsoft.AspNetCore.MiddlewareAnalysis.MiddlewareException")]
        public void OnMiddlewareException(Exception exception, HttpContext httpContext, string name, Guid instance, long timestamp, long duration)
        {
            _logger.LogInformation($"中間件-異常: '{name}'; '{exception.Message}'");
        }

        [DiagnosticName("Microsoft.AspNetCore.MiddlewareAnalysis.MiddlewareFinished")]
        public void OnMiddlewareFinished(HttpContext httpContext, string name, Guid instance, long timestamp, long duration)
        {
            _logger.LogInformation($"中間件-結(jié)束: 耗時(shí)[{duration/10000}] '{name}'; Status: '{httpContext.Response.StatusCode}'");
        }
    }

第三步,注冊(cè)相關(guān)服務(wù)來啟用分析中間件的功能

  1. 注冊(cè)中間件分析服務(wù)
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddMiddlewareAnalysis();
  1. 訂閱我們的分析診斷適配器
var listener = app.Services.GetRequiredService<DiagnosticListener>();
var observer = ActivatorUtilities.CreateInstance<AnalysisDiagnosticAdapter>(app.Services);
using var disposable = listener.SubscribeWithAdapter(observer);

這樣基本就完成了分析記錄中間件的功能,啟動(dòng)程序看看效果
ASP.NET Core如何知道一個(gè)請(qǐng)求執(zhí)行了哪些中間件?

日志已經(jīng)成功的輸出到我們的控制臺(tái)了,不過才四個(gè)中間件,應(yīng)該不止這么少的,再在注冊(cè)中間件分析服務(wù)哪里添加一句代碼

var builder = WebApplication.CreateBuilder(args);
// 新增的下面這句代碼
builder.Services.Insert(0, ServiceDescriptor.Transient<IStartupFilter, AnalysisStartupFilter>());
builder.Services.AddMiddlewareAnalysis();

現(xiàn)在再來看看效果,發(fā)現(xiàn)變成8個(gè)中間件了多了四個(gè)
ASP.NET Core如何知道一個(gè)請(qǐng)求執(zhí)行了哪些中間件?

在Release模式編譯后,運(yùn)行發(fā)現(xiàn)中間件的執(zhí)行效率非常高,幾乎不占用時(shí)間
ASP.NET Core如何知道一個(gè)請(qǐng)求執(zhí)行了哪些中間件?

異常記錄這里就不放圖了,有興趣的朋友自己去試試。
簡(jiǎn)單三步就可以知道一個(gè)請(qǐng)求到底執(zhí)行了哪些中間件還是挺方便的。想知道實(shí)現(xiàn)原理可以去看看Microsoft.AspNetCore.MiddlewareAnalysis這個(gè)庫,一共才四個(gè)文件看起來不費(fèi)事。文章來源地址http://www.zghlxwxcb.cn/news/detail-408828.html

到了這里,關(guān)于ASP.NET Core如何知道一個(gè)請(qǐng)求執(zhí)行了哪些中間件?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 測(cè)試 ASP.NET Core 中間件

    測(cè)試 ASP.NET Core 中間件

    ????????正常情況下,中間件會(huì)在主程序入口統(tǒng)一進(jìn)行實(shí)例化,這樣如果想單獨(dú)測(cè)試某一個(gè)中間件就很不方便,為了能測(cè)試單個(gè)中間件,可以使用?TestServer?單獨(dú)測(cè)試。 這樣便可以: 實(shí)例化只包含需要測(cè)試的組件的應(yīng)用管道。 發(fā)送自定義請(qǐng)求以驗(yàn)證中間件行為。 這樣測(cè)試

    2024年01月20日
    瀏覽(28)
  • .net 溫故知新【17】:Asp.Net Core WebAPI  中間件

    .net 溫故知新【17】:Asp.Net Core WebAPI 中間件

    到這篇文章為止,關(guān)于.NET \\\"溫故知新\\\"系列的基礎(chǔ)知識(shí)就完結(jié)了,從這一系列的系統(tǒng)回顧和再學(xué)習(xí),對(duì)于.NET core、ASP.NET CORE又有了一個(gè)新的認(rèn)識(shí)。 不光是從使用,還包括這些知識(shí)點(diǎn)的原理,雖然深入原理談不上,但對(duì)于日常使用也夠了,我想的是知其然,知其所以然。 在實(shí)際

    2024年01月18日
    瀏覽(96)
  • asp.net core中間件預(yù)防防止xss攻擊

    上面實(shí)現(xiàn)思路是針對(duì)json序列化后的string字符串進(jìn)行編碼防止xss攻擊 其他實(shí)現(xiàn)比如中間件、Action的AOP方法也是可以的,可以自己實(shí)現(xiàn) 主要是看web項(xiàng)目使用的是那個(gè)json序列化工具newtonsoft就用newtonsoft,system.text.json就用下面的那個(gè)

    2024年02月07日
    瀏覽(21)
  • 【ASP.NET Core 基礎(chǔ)知識(shí)】--中間件--什么是中間件

    本篇文章作為中間件單元的開篇文章,通過這篇文章可以了解什么是中間件、內(nèi)置中間件的使用以及怎么創(chuàng)建自定義中間件。我們先來看一下中間件的角色、目的和重要性。 1. 角色 請(qǐng)求處理管道的構(gòu)建塊: 中間件是構(gòu)成ASP.NET Core請(qǐng)求處理管道的基本組成部分。每個(gè)HTTP請(qǐng)求都

    2024年01月16日
    瀏覽(137)
  • 1.ASP.NET Core中間件管道MAP的作用?

    簡(jiǎn)述: Map基于給定請(qǐng)求路徑的匹配項(xiàng)來創(chuàng)建請(qǐng)求管道分支??梢葬槍?duì)不同的路徑添加不同的中間件。 詳解: 中間件是組裝到應(yīng)用程序管道中以處理請(qǐng)求和響應(yīng)的軟件組件。 每個(gè)組件都選擇是否將請(qǐng)求傳遞給管道中的下一個(gè)組件,并可以在管道中調(diào)用下一個(gè)組件之前和之后執(zhí)

    2024年02月17日
    瀏覽(21)
  • 【ASP.NET Core 基礎(chǔ)知識(shí)】--中間件--內(nèi)置中間件的使用

    ASP.NET Core 中包含很多內(nèi)置的中間件,我們不可能對(duì)每一個(gè)內(nèi)置的中間件進(jìn)行一一講解,并且中間件的使用步驟大致一樣,因此本文講解幾個(gè)常用的內(nèi)置中間件以及使用中間件的步驟,希望讀者們可以舉一反三。 一、內(nèi)置中間件的介紹 1.1 靜態(tài)文件中間件 在ASP.NET Core中,靜態(tài)

    2024年01月17日
    瀏覽(97)
  • 【ASP.NET Core 基礎(chǔ)知識(shí)】--中間件--創(chuàng)建自定義中間件

    一、為什么需要自定義中間件 自定義中間件在ASP.NET Core中的應(yīng)用主要有以下幾個(gè)原因: 滿足特定需求: 默認(rèn)情況下,ASP.NET Core提供了許多內(nèi)置的中間件來處理常見的任務(wù),如身份驗(yàn)證、授權(quán)、靜態(tài)文件服務(wù)等。然而,某些項(xiàng)目可能有特定的需求,需要定制化的處理流程,這

    2024年01月17日
    瀏覽(100)
  • ASP.NET Core中間件記錄管道圖和內(nèi)置中間件

    ASP.NET Core中間件記錄管道圖和內(nèi)置中間件

    下圖顯示了 ASP.NET Core MVC 和 Razor Pages 應(yīng)用程序的完整請(qǐng)求處理管道 中間件組件在文件中添加的順序 Program.cs 定義了請(qǐng)求時(shí)調(diào)用中間件組件的順序以及響應(yīng)的相反順序。該順序?qū)τ诎踩?、性能和功?至關(guān)重要。 ? 內(nèi)置中間件 原文 翻譯 Middleware Description Order 中間件 描述 命

    2024年02月13日
    瀏覽(20)
  • ASP.NET Core 的 Web Api 實(shí)現(xiàn)限流 中間件

    ASP.NET Core 的 Web Api 實(shí)現(xiàn)限流 中間件

    Microsoft.AspNetCore.RateLimiting ?中間件提供速率限制(限流)中間件。 它是.NET 7 以上版本才支持的中間件,剛看了一下,確實(shí)挺好用,下面給大家簡(jiǎn)單介紹一下: RateLimiterOptionsExtensions?類提供下列用于限制速率的擴(kuò)展方法:????? 固定窗口限制器 滑動(dòng)窗口限制器 令牌桶限

    2024年01月17日
    瀏覽(18)
  • 如何將 ASP.NET Core MVC 項(xiàng)目的視圖分離到另一個(gè)項(xiàng)目

    在當(dāng)下這個(gè)年代 SPA 已是主流,人們?cè)缫淹浟?MVC 以及 Razor 的故事。但是在某些場(chǎng)景下 SSR 還是有意想不到效果。比如某些靜態(tài)頁面,比如追求首屏加載速度的時(shí)候。最近在項(xiàng)目中回歸傳統(tǒng)效果還是不錯(cuò)。 有的時(shí)候我們希望將視圖(Views)從主項(xiàng)目中分離出來,以提高項(xiàng)目的

    2024年04月22日
    瀏覽(46)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包