实时监控.NET Core请求次数:创建记录最近5分钟的请求,轻松可靠

这篇具有很好参考价值的文章主要介绍了实时监控.NET Core请求次数:创建记录最近5分钟的请求,轻松可靠。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实时监控.NET Core请求次数:创建记录最近5分钟的请求,轻松可靠

 

概述:在.NET Core中,通过创建RequestCountMiddleware中间件,结合MemoryCache,实现了记录最近5分钟请求次数的功能。该中间件在每个请求中更新计数,并使用缓存存储,为简单而实用的请求监控提供了一个示例。

要实现一个在.NET Core中记录最近5分钟请求次数的RequestCountMiddleware,你可以按照以下步骤操作。在这个例子中,我们将使用MemoryCache来存储请求计数。

  1. 创建中间件类:
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Caching.Memory;
using System;
using System.Threading.Tasks;

public class RequestCountMiddleware
{
    private readonly RequestDelegate _next;
    private readonly IMemoryCache _memoryCache;

    public RequestCountMiddleware(RequestDelegate next, IMemoryCache memoryCache)
    {
        _next = next ?? throw new ArgumentNullException(nameof(next));
        _memoryCache = memoryCache ?? throw new ArgumentNullException(nameof(memoryCache));
    }

    public async Task InvokeAsync(HttpContext context)
    {
        // 获取当前时间的分钟部分,以便将请求计数与时间关联
        var currentMinute = DateTime.UtcNow.ToString("yyyyMMddHHmm");

        // 从缓存中获取当前分钟的请求计数,如果不存在则初始化为0
        var requestCount = _memoryCache.GetOrCreate(currentMinute, entry =>
        {
            entry.AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(5);
            return 0;
        });

        // 增加请求计数
        requestCount++;

        // 更新缓存中的请求计数
        _memoryCache.Set(currentMinute, requestCount);

        // 执行下一个中间件
        await _next(context);
    }
}
  1. 在Startup.cs中注册中间件:

ConfigureServices方法中注册MemoryCache服务,并在Configure方法中使用UseMiddleware添加RequestCountMiddleware

using Microsoft.Extensions.DependencyInjection;

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        // 注册MemoryCache服务
        services.AddMemoryCache();
    }

    public void Configure(IApplicationBuilder app)
    {
        // 添加RequestCountMiddleware到中间件管道
        app.UseMiddleware<RequestCountMiddleware>();

        // 其他中间件...
    }
}
  1. 使用中间件:

现在,RequestCountMiddleware将在每个请求中记录最近5分钟的请求次数。 测试代码

    [ApiController]
    [Route("[controller]")]
    public class TestController : ControllerBase
    {

        private readonly IMemoryCache _memoryCache;

        public TestController(IMemoryCache memoryCache)
        {
            _memoryCache = memoryCache;
        }

        public IActionResult Index()
        {
            var currentMinute = DateTime.UtcNow.ToString("yyyyMMddHHmm");

            // 从缓存中获取当前分钟的请求计数,如果不存在则初始化为0
            var requestCount = _memoryCache.Get<int>(currentMinute);
            return Ok($"5分钟内访问次数:{requestCount}次");
        }
    }

运行效果:

实时监控.NET Core请求次数:创建记录最近5分钟的请求,轻松可靠

 

请注意,这个示例使用MemoryCache来存储请求计数,这意味着计数将在应用程序重新启动时重置。如果需要持久性,可以考虑使用其他存储方式,如数据库。

源代码获取:
https://pan.baidu.com/s/1To2txIo9VDH2myyM4ecRhg?pwd=6666

 

实时监控.NET Core请求次数:创建记录最近5分钟的请求,轻松可靠文章来源地址https://www.toymoban.com/news/detail-837912.html

到了这里,关于实时监控.NET Core请求次数:创建记录最近5分钟的请求,轻松可靠的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • asp.net core之实时应用

    本文将介绍ASP.NET Core SignalR,这是一个强大的实时通信库,用于构建实时、双向通信应用程序。我们将探讨SignalR的基本概念、架构和工作原理,并提供一些示例代码来帮助读者更好地理解和使用SignalR。 ASP.NET Core SignalR提供了一种简单而强大的方式来构建实时通信应用程序。

    2024年02月14日
    浏览(56)
  • Taurus .Net Core 微服务开源框架:Admin 插件【4-7】 - 配置管理-Mvc【Plugin-Metric 接口调用次数统计】

    继上篇:Taurus .Net Core 微服务开源框架:Admin 插件【4-6】 - 配置管理-Mvc【Plugin-Doc 接口测试及文档】 本篇继续介绍下一个内容: 配置界面如下: 打开开关时,可以通过访问Metric菜单查看统计项:   默认不统计。 如果为true,则写入硬盘。 时间单位为秒。  配置的是相对路径

    2024年02月04日
    浏览(57)
  • ASP.NET Core实时库SignalR简单应用

    SignalR 是用于构建需要实时用户交互或实时数据更新的Web 应用程序的一个开放源代码.NET 库。不仅仅用在Web应用中,后面会讲到它的应用范围。它简化了简化了构建实时应用程序的过程,包括 ASP.NET Server 库和 JavaScript Client 库,以便管理Client与Server连接并将内容更新推送给Cl

    2024年02月11日
    浏览(75)
  • ASP.NET Core 中使用 WebSocket 协议进行实时通信

    介绍 在 ASP.NET Core 中使用 WebSocket 协议创建实时通信的完整示例涉及几个步骤。在此示例中,我们将创建一个简单的聊天应用程序,用户可以在其中实时发送和接收消息。此示例假设您对 ASP.NET Core 和 C# 有基本了解。 步骤1.创建一个新的ASP.NET Core项目 首先,使用 Visual Studio 或

    2024年01月25日
    浏览(50)
  • .NET Core HttpClient请求异常分析

    推送逻辑是在类库中使用HttpClient,所以没有使用HttpClientFactory,因此定义静态变量来使用HttpClient,而非每一个请求就实例化一个HttpClient, 接下来我们来详细分析项目示例代码并对其进行改进 若对接方仅使用HTTPS协议,无需验证证书,最好是忽略证书验证,否则有可能会引起

    2024年02月03日
    浏览(47)
  • Asp.Net VS ASP.NET Core 请求管道

    参考链接 ASP.NET CORE 启动过程及源码解读 请求进入Asp.Net工作进程后,由进程创建HttpWorkRequest对象,封装此次请求有关的所有信息,然后进入HttpRuntime类进行进一步处理。HttpRuntime通过请求信息创建HttpContext上下文对象,此对象将贯穿整个管道,直到响应结束。同时创建或从应用

    2024年02月04日
    浏览(78)
  • .NET Core使用 CancellationToken 取消API请求

    您是否曾经访问过一个网站,它需要很长时间加载,最终你敲击 F5 重新加载页面。 即使用户刷新了浏览器取消了原始请求,而对于服务器来说,API也不会知道它正在计算的值将在结束时被丢弃,刷新五次,服务器将触发 5 个请求。 为了解决这个问题,ASP.NET Core 为 Web 服务器

    2024年03月17日
    浏览(50)
  • ASP.NET Core - 日志记录系统(一)

    日志记录是什么?简单而言,就是通过一些方式记录应用程序运行中的某一时刻的状态,保留应用程序当时的信息。这对于我们进行应用程序的分析、审计以及维护有很大的作用。 作为程序员,我们恐怕谁也不敢保证我们开发的软件应用一定不存在BUG,一定不会出现故障,而

    2024年02月17日
    浏览(33)
  • Asp.Net Core服务端处理请求过来的压缩格式

            之前是直接传没有经过压缩的文件字节,有时文件过大的话,可能占宽带就多,宽带流量都是钱。后来有个想法,在客户端把文件进行压缩,把压缩的文件流发给服务端进行解压。 1,先修改项目中 Startup.cs 文件中ConfigureServices()方法中的代码: 2 ,先修改项目中 S

    2024年02月06日
    浏览(51)
  • 如何在 ASP.NET Core 配置请求超时中间件

    本文参考官方文档,使用Asp.net core 8.0 的最小API 模板项目,配置超时中间件。 超时中间件可用于所有类型的ASP.NET Core应用:最小 API、带控制器的 Web API、MVC 和 Razor Pages。请求超时的属性位于命名空间 Microsoft.AspNetCore.Http.Timeouts 中。 需要注意的是,当应用在调试模式下运行时

    2024年01月20日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包