ASP.NET Core中间件计算Http请求时间示例详解

2025-05-29 0 76

ASP.NET Core通过RequestDelegate这个委托类型来定义中间件

?

1
public delegate Task RequestDelegate(HttpContext context);

可将一个单独的请求委托并行指定为匿名方法(称为并行中间件),或在类中对其进行定义。可通过Use,或在Middleware类中配置要传递给委托执行的方法(参数类型HttpContext,返回值类型Task)。

?

1

2

3
public static IApplicationBuilder Use(this IApplicationBuilder app, Func<HttpContext, Func<Task>, Task> middleware);

public static IApplicationBuilder UseMiddleware<TMiddleware>(this IApplicationBuilder app, params object[] args);

通过定义一个中间件类 来计算http请求的时间,例:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27
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);

}

}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对快网idc的支持。

原文链接:https://www.cnblogs.com/rohmeng/p/11028465.html

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 ASP.NET Core中间件计算Http请求时间示例详解 https://www.kuaiidc.com/98566.html

相关文章

发表评论
暂无评论