mirror of
http://git.coreshop.cn/jianweie/coreshoppro.git
synced 2025-12-06 17:53:25 +08:00
【新增】新增并发限制中间件【Microsoft.AspNetCore.ConcurrencyLimiter】,限制并发处理,请结合限流进行合理配置。
This commit is contained in:
@@ -49,6 +49,7 @@
|
||||
<PackageReference Include="Essensoft.Paylink.Alipay" Version="4.0.14" />
|
||||
<PackageReference Include="Essensoft.Paylink.WeChatPay" Version="4.0.14" />
|
||||
<PackageReference Include="IdentityModel" Version="6.0.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.ConcurrencyLimiter" Version="7.0.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="7.0.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="7.0.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.Versioning" Version="5.0.0" />
|
||||
|
||||
@@ -84,6 +84,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 =>
|
||||
{
|
||||
@@ -151,6 +160,7 @@ builder.Host.UseNLog();
|
||||
var app = builder.Build();
|
||||
|
||||
|
||||
|
||||
#region 解决Ubuntu Nginx 代理不能获取IP问题===================================================================
|
||||
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
||||
{
|
||||
@@ -159,7 +169,8 @@ app.UseForwardedHeaders(new ForwardedHeadersOptions
|
||||
#endregion
|
||||
|
||||
#region 中间件注册===================================================================
|
||||
|
||||
// 启用并发限制数中间件
|
||||
app.UseConcurrencyLimiter();
|
||||
// 开启Ip限流
|
||||
app.UseIpLimitMiddle();
|
||||
// 记录请求与返回数据 (注意开启权限,不然本地无法写入)
|
||||
@@ -168,7 +179,6 @@ app.UseRequestResponseLog();
|
||||
app.UseRecordAccessLogsMildd(GlobalEnumVars.CoreShopSystemCategory.Admin.ToString());
|
||||
// 记录ip请求 (注意开启权限,不然本地无法写入)
|
||||
app.UseIpLogMildd();
|
||||
|
||||
#endregion
|
||||
|
||||
app.UseSwagger().UseSwaggerUI(c =>
|
||||
|
||||
@@ -59,6 +59,12 @@
|
||||
//开启Ip限流
|
||||
"IpRateLimit": {
|
||||
"Enabled": false
|
||||
},
|
||||
"ConcurrencyLimiter": {
|
||||
//最大并发请求数
|
||||
"MaxConcurrentRequests": 100,
|
||||
//最大请求数
|
||||
"RequestQueueLimit": 100
|
||||
}
|
||||
},
|
||||
//ip限流规则设置
|
||||
|
||||
Reference in New Issue
Block a user