.NET Core记录请求处理时间的中间件
2024-10-08
38
以下是一个示例的 .NET Core 中间件,用于记录请求处理时间的情况:
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using System;
using System.Diagnostics;
using System.Threading.Tasks;
public class TimingMiddleware
{
private readonly RequestDelegate _next;
private readonly ILogger<TimingMiddleware> _logger;
public TimingMiddleware(RequestDelegate next, ILogger<TimingMiddleware> logger)
{
_next = next;
_logger = logger;
}
public async Task Invoke(HttpContext context)
{
var stopwatch = Stopwatch.StartNew();
try
{
await _next(context);
}
finally
{
stopwatch.Stop();
var elapsedMilliseconds = stopwatch.ElapsedMilliseconds;
_logger.LogInformation($"Request took {elapsedMilliseconds} ms");
}
}
}
将上述代码放在你的项目中,然后在 Startup.cs 文件的 Configure 方法中使用该中间件:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
// ...
app.UseMiddleware<TimingMiddleware>();
// ...
}
这样,每次请求进入中间件时,它会记录请求处理的时间,并将其记录到日志中。你可以使用项目的日志记录器(例如 ILogger<T>)进行记录,也可以使用其他日志库。
这是一个基本示例,你可以根据需要进行修改和扩展,例如记录请求的路径、HTTP 方法、响应状态码等其他有用的信息。也可以对请求时间做一些条件筛选,比如记录一些请求时间过长的请求,把请求的路径信息等记录下方便进行代码优化。
更新于:1个月前赞一波!
相关文章
- Sylvan.Data.Excel 性能优异的开源.NET Excel数据读取库
- ASP.NET Core 中常用的内置中间件
- .NET9 F#有什么新特性?
- .NET 开源 ORM FreeSql 使用教程
- .NET9 C# 13 有哪些新特性?
- .NET9 开始删除内置的 Swagger 支持 可使用Scalar.AspNetCore替代
- .NET 9 中System.Text.Json 的新增功能
- 什么是.NET渐进式Web应用(PWA)
- .NET9在ASP.NET MVC有什么更新?
- .NET开发中常见的异常报错原因和解决方法?
- .NET框架和CLR的工作原理?
- ASP.NET MVC与Web Forms的区别
- .NET C#中的IEnumerable和IEnumerator的区别
- 使用ADO.NET连接到南大通用GBase 8s数据库
- 鸿蒙OpenHarmony系统可以运行跨平台的.NET Core吗?
- ASP.NET Core使用partial标签报错
- .NET 9 即将推出的功能Task.WhenEach
- .NET 使用HttpClientFactory+Polly替代直接使用HttpClient
- .NET Framework被淘汰了吗?
- 强大的 .NET Mock 框架 单元测试模拟库Moq使用教程
文章评论
评论问答