当前位置:首页 > 数码 > Core两边件成功Web-经常使用.NET-API流量限度指南 (core左边的工具如何恢复)

Core两边件成功Web-经常使用.NET-API流量限度指南 (core左边的工具如何恢复)

admin3个月前 (04-17)数码25

在Core中,咱们可以经常使用ASP.NETCore的两边件来对WebAPI启动流量限度。ASP.NETCore提供了一个名为RateLimit的开源库,可以繁难地成功流量限度性能。上方将详细引见如何在.NETCore中经常使用RateLimit库对WebAPI启动流量限度,并给出相应的示例代码。

装置RateLimit库

首先,咱们须要在.NETCore名目中装置RateLimit库。可以经过NuGet包治理器或许dotnet命令行工具来装置该库。

dotnetaddpackageAspNetCoreRateLimit

性能流量限度

在名目标Startup.cs文件中,咱们须要启动一些性能来启用流量限度性能。详细步骤如下:

导入关系命名空间

在Startup.cs文件中,导入AspNetCoreRateLimit命名空间。

usingAspNetCoreRateLimit;

减少流量限度性能

在ConfigureServices方法中,减少流量限度性能。

publicvoidConfigureServices(IServiceCollectionservices){//减少流量限度性能services.AddOptions();services.AddMemoryCache();services.Configure<IpRateLimitOptions>(Configuration.GetSection("IpRateLimiting"));services.Configure<IpRateLimitPolicies>(Configuration.GetSection("IpRateLimitPolicies"));services.AddSingleton<IIpPolicyStore,MemoryCacheIpPolicyStore>();services.AddSingleton<IRateLimitCounterStore,MemoryCacheRateLimitCounterStore>();services.AddSingleton<IRateLimitConfiguration,RateLimitConfiguration>();}

减少流量限度两边件

在Configure方法中,减少流量限度两边件。

publicvoidConfigure(IlicationBuilderapp,IWebHostEnvironmentenv){//减少流量限度两边件app.UseIpRateLimiting();//其余两边件性能//...}

减少流量限度性能文件

在appsettings.json文件中,减少流量限度的性能项。

{"IpRateLimiting":{"EnableEndpointRateLimiting":true,"StackBlockedRequests":false,"RealIpHeader":"X-Real-IP","ClientIdHeader":"X-ClientId","HttpStatusCode":429,"GeneralRules":[{"Endpoint":"*","Period":"1s","Limit":5}]},"IpRateLimitPolicies":{"EndpointRateLimitPolicy":{"Period":"1s","Limit":10}}}

以上性能中,咱们设置了一个通用规定(GeneralRules),即每秒最多准许5个恳求。可以依据实践需求启动调整。

经常使用流量限度

在须要启动流量限度的WebAPI接口上,咱们可以经过经常使用RateLimit个性来启用流量限度。详细步骤如下:

导入关系命名空间

.NET

在须要启动流量限度的控制器文件中,导入AspNetCoreRateLimit命名空间。

usingAspNetCoreRateLimit;

减少流量限度个性

在须要启动流量限度的接口方法上,减少RateLimit个性。

[RateLimit("EndpointRateLimitPolicy")][HttpGet]publicIActionResultGet(){//接口逻辑//...}

在上述代码中,咱们经常使用了名为EndpointRateLimitPolicy的流量限度战略。可以依据实践需求启动调整。

完整示例代码

上方给出一个完整的示例代码,展示如何在.NETCore中经常使用RateLimit库对WebAPI启动流量限度。假定咱们要对一个繁难的GET接口启动流量限度。

usingAspNetCoreRateLimit;usingMicrosoft.AspNetCore.Builder;usingMicrosoft.AspNetCore.Hosting;usingMicrosoft.AspNetCore.Mvc;usingMicrosoft.Extensions.Configuration;usingMicrosoft.Extensions.DependencyInjection;usingMicrosoft.Extensions.Hosting;namespaceRateLimitExample{publicclassStartup{publicStartup(IConfigurationconfiguration){Configuration=configuration;}publicIConfigurationConfiguration{get;}publicvoidConfigureServices(IServiceCollectionservices){services.AddControllers();//减少流量限度性能services.AddOptions();services.AddMemoryCache();services.Configure<IpRateLimitOptions>(Configuration.GetSection("IpRateLimiting"));services.Configure<IpRateLimitPolicies>(Configuration.GetSection("IpRateLimitPolicies"));services.AddSingleton<IIpPolicyStore,MemoryCacheIpPolicyStore>();services.AddSingleton<IRateLimitCounterStore,MemoryCacheRateLimitCounterStore>();services.AddSingleton<IRateLimitConfiguration,RateLimitConfiguration>();}publicvoidConfigure(IApplicationBuilderapp,IWebHostEnvironmentenv){if(env.IsDevelopment()){app.UseDeveloperExceptionPage();}app.UseRouting();//减少流量限度两边件app.UseIpRateLimiting();app.UseEndpoints(endpoints=>{endpoints.MapControllers();});}}[ApiController][Route("api/[controller]")]publicclassTestController:ControllerBase{[RateLimit("EndpointRateLimitPolicy")][HttpGet]publicIActionResultGet(){//接口逻辑returnOk("Hello,World!");}}}

在上述代码中,须要将appsettings.json性能文件中的IpRateLimiting和IpRateLimitPolicies节点交流为实践的性能。

以上就是在.NETCore中经常使用RateLimit库对WebAPI启动流量限度的详细步骤和示例代码。经过这种模式,咱们可以繁难地对WebAPI启动流量控制,以保障系统的稳固性和可用性。


Visual Studio 2019 core 3.0 具体步骤如下图: 此处我们选择API(新手不推荐选择空项目,选择API系统会为我们自动创建WebApi需要的一些配置文件等),Https配置这一项我们暂时不勾选,目前我们不配置Https。 F5运行项目,然后就可以看到微软为我们写好的一个天气预报示例webapi了,这里只有一个Get请求示例,返回值为json格式。 注意: (); 和();方法成对出现, 这是 core3.0中的最新写法 ConfigureServices方法 用来向容器中注册服务,注册好的服务可以在其他地方进行调用. Configure方法 用来配置中间件管道,即如何响应http请求. 1 右键删除系统默认创建的 和 2 新建一个控制器,命名: 问题来了,为啥直接给打开 weatherforecast ,而且还404了,别急,往下看。 (┬_┬)怎么还是404?别急继续往下看上面增加 action 虽然能达到想要的结果,但是每次新建一个 Controller 都有写个 action 万一要是忘记了又要忙乎半天,有没有一劳永逸的办法呢? 继续往下看: 1.首先去掉Controller里的 Route 和 ApiController 2.修改 ,增加路由模版:今天就到这里,后期继续完善我们的webapi。

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: .NET

“Core两边件成功Web-经常使用.NET-API流量限度指南 (core左边的工具如何恢复)” 的相关文章

3.1-8-.NET-Core-从-.NET-无缝更新到-摸索全面变更指南 (318川藏线)

3.1-8-.NET-Core-从-.NET-无缝更新到-摸索全面变更指南 (318川藏线)

Core3.1曾经用了很长一段期间,其真实2022年的年底微软曾经不提供支持了,前面的一个LTS版本.NET6也会在2024年11月中断支持,所以间接更新到.NET8是最好的选用。 微软官网...

作为-的原因-Python-开发人员-我开始使用-.NET (作为的原因)

作为-的原因-Python-开发人员-我开始使用-.NET (作为的原因)

作者:Alex Maher | 编译:小欧 作为一名开发人员,很长一段时间以来,我一直关注 C 和 .NET 的出色工具和功能。但我最近开始使用 Python,感觉非常棒。这里申明一点,文章...

INI和环境变量-.NET性能文件大揭秘-XML-轻松读取JSON (int环境)

INI和环境变量-.NET性能文件大揭秘-XML-轻松读取JSON (int环境)

概述: 中的IConfiguration接口提供了一种多源读取性能消息的灵敏机制,包括JSON、XML、INI文件和环境变量。经过示例,明晰展示了从这些不同源中读取性能的方法,使性能失...

与-的比较和选择指南-ValueTask-异步编程-Task-.NET-深入 (と与や的比较)

与-的比较和选择指南-ValueTask-异步编程-Task-.NET-深入 (と与や的比较)

In C, a task represents an asynchronous operation. It is commonly used to encapsulate time-consumi...

.NET-以及内存机制深化详解-中高效字符串存储指南-常量与灵活字符串解析

.NET-以及内存机制深化详解-中高效字符串存储指南-常量与灵活字符串解析

在中,字符串是无法变的,这象征着一旦创立,字符串的内容就不能被修正。字符串在内存中以不同的模式存储,详细取决于它是常量字符串还是灵活创立的字符串。 常量字符串 常量字符串在编译时就被解...

开源的.NET散布式事务处置打算 (开源的内核架构)

开源的.NET散布式事务处置打算 (开源的内核架构)

前言 在散布式系统中,因为各个系统服务之间的独立性和网络通讯的不确定性,要确保跨系统的事务操作的最终分歧性是一项严重的应战。当天给大家介绍一个开源的处置散布式事务的处置打算基于.NETSta...

揭秘.NET-冲动人心的变动-8.0 (揭秘国安部点名的间谍机构)

揭秘.NET-冲动人心的变动-8.0 (揭秘国安部点名的间谍机构)

作者:葡萄城技术团队 链接: 1性能优化 .NET8在整个堆栈中带来了数千项性能改良。自动状况下会启用一种名为灵活性能文件疏导优化(PGO)的新代码生成器,它可以依据实...