ASP.NET Core中間件計(jì)算Http請(qǐng)求時(shí)間示例詳解
ASP.NET Core通過(guò)RequestDelegate這個(gè)委托類(lèi)型來(lái)定義中間件
public delegate Task RequestDelegate(HttpContext context);
可將一個(gè)單獨(dú)的請(qǐng)求委托并行指定為匿名方法(稱(chēng)為并行中間件),或在類(lèi)中對(duì)其進(jìn)行定義??赏ㄟ^(guò)Use,或在Middleware類(lèi)中配置要傳遞給委托執(zhí)行的方法(參數(shù)類(lèi)型HttpContext,返回值類(lèi)型Task)。
public static IApplicationBuilder Use(this IApplicationBuilder app, Func<HttpContext, Func<Task>, Task> middleware); public static IApplicationBuilder UseMiddleware<TMiddleware>(this IApplicationBuilder app, params object[] args);
通過(guò)定義一個(gè)中間件類(lèi) 來(lái)計(jì)算http請(qǐng)求的時(shí)間,例:
public class ResponseTimeMiddleware { // Name of the Response Header, Custom Headers starts with "X-" private const string RESPONSE_HEADER_RESPONSE_TIME = "X-Response-Time-ms"; // Handle to the next Middleware in the pipeline private readonly RequestDelegate _next; public ResponseTimeMiddleware(RequestDelegate next) { _next = next; } public Task InvokeAsync(HttpContext context) { // Start the Timer using Stopwatch var watch = new Stopwatch(); watch.Start(); context.Response.OnStarting(() => { // Stop the timer information and calculate the time watch.Stop(); var responseTimeForCompleteRequest = watch.ElapsedMilliseconds; // Add the Response time information in the Response headers. context.Response.Headers[RESPONSE_HEADER_RESPONSE_TIME] = responseTimeForCompleteRequest.ToString(); return Task.CompletedTask; }); // Call the next delegate/middleware in the pipeline return this._next(context); } }
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
asp.net(c#)做一個(gè)網(wǎng)頁(yè)數(shù)據(jù)采集工具
最近做一個(gè)網(wǎng)站,該網(wǎng)站需要添加4000多 產(chǎn)品信息,如果用人工方法去別的網(wǎng)站copy那至少要花費(fèi)半月時(shí)間才能完成,所以我個(gè)辦法使用c#作出來(lái)了一個(gè)網(wǎng)頁(yè)數(shù)據(jù)采集軟件.2009-12-12asp.net下比較兩個(gè)等長(zhǎng)字符串是否含有完全相同字符(忽略字符順序)
項(xiàng)目中遇到一個(gè)好玩的問(wèn)題,需要比較兩個(gè)選擇區(qū)域選擇的文字是否一樣,就想到將這兩個(gè)區(qū)域中選中的文字鏈接起來(lái)進(jìn)行兩個(gè)字符串之間的比較2010-06-06ASP.NET Core 2.0 帶初始參數(shù)的中間件問(wèn)題及解決方法
這篇文章主要介紹了ASP.NET Core 2.0 帶初始參數(shù)的中間件問(wèn)題及解決方法,需要的朋友可以參考下2017-10-10ASP.NET Core利用UrlFirewall對(duì)請(qǐng)求進(jìn)行過(guò)濾的方法示例
這篇文章主要給大家介紹了關(guān)于ASP.NET Core利用UrlFirewall對(duì)請(qǐng)求進(jìn)行過(guò)濾的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-05-05輕量級(jí)ORM框架Dapper應(yīng)用之實(shí)現(xiàn)CURD操作
這篇文章介紹了使用Dapper實(shí)現(xiàn)CURD操作的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03.NET使用YARP通過(guò)編碼方式配置域名轉(zhuǎn)發(fā)實(shí)現(xiàn)反向代理
這篇文章介紹了.NET使用YARP通過(guò)編碼方式配置域名轉(zhuǎn)發(fā)實(shí)現(xiàn)反向代理的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09asp.net(c#)程序版本升級(jí)更新的實(shí)現(xiàn)代碼
我們做了程序,不免會(huì)有版本升級(jí),這就需要程序有自動(dòng)版本升級(jí)的功能。那么看看我是如何實(shí)現(xiàn)程序自動(dòng)更新的。2010-03-03mstest實(shí)現(xiàn)類(lèi)似單元測(cè)試nunit中assert.throws功能
我們做單元測(cè)試NUnit中,有一個(gè)斷言Assert.Throws很好用,現(xiàn)在我們來(lái)擴(kuò)展一下也實(shí)現(xiàn)類(lèi)似成功能,大家參考使用吧2014-01-01asp.net 相關(guān)文章實(shí)現(xiàn)方法
大家或許會(huì)覺(jué)得很驚訝:為什么靈感之源會(huì)討論SQL?或許應(yīng)該這樣說(shuō)吧:搞業(yè)務(wù)系統(tǒng),不跟SQL扯上關(guān)系似乎比較難。2009-05-05