【新增】新增并发限制中间件【Microsoft.AspNetCore.ConcurrencyLimiter】,限制并发处理,请结合限流进行合理配置。

This commit is contained in:
大灰灰
2022-11-11 02:58:16 +08:00
parent 2313bf6ac9
commit 67496fddfc
7 changed files with 45 additions and 12 deletions

View File

@@ -95,6 +95,15 @@ builder.Services.AddHttpContextSetup();
//服务配置中加入AutoFac控制器替换规则。
builder.Services.Replace(ServiceDescriptor.Transient<IControllerActivator, ServiceBasedControllerActivator>());
//并发限制-使用队列策略模式
builder.Services.AddQueuePolicy(options =>
{
//最大并发请求数,超过之后,进行排队
options.MaxConcurrentRequests = AppSettingsConstVars.MiddlewareConcurrencyLimiterMaxConcurrentRequests;
//最大请求数,超过之后,返回503
options.RequestQueueLimit = AppSettingsConstVars.MiddlewareConcurrencyLimiterRequestQueueLimit;
});
//注册mvc注册razor引擎视图
builder.Services.AddMvc(options =>
{
@@ -170,7 +179,8 @@ app.UseForwardedHeaders(new ForwardedHeadersOptions
#endregion
#region ===================================================================
// 启用并发限制数中间件
app.UseConcurrencyLimiter();
// 开启Ip限流
app.UseIpLimitMiddle();
// 记录请求与返回数据 (注意开启权限,不然本地无法写入)
@@ -179,7 +189,6 @@ app.UseRequestResponseLog();
app.UseRecordAccessLogsMildd(GlobalEnumVars.CoreShopSystemCategory.Api.ToString());
// 记录ip请求 (注意开启权限,不然本地无法写入)
app.UseIpLogMildd();
#endregion
//强制显示中文