mirror of
http://git.coreshop.cn/jianweie/coreshoppro.git
synced 2025-12-06 17:43:26 +08:00
【新增】新增并发限制中间件【Microsoft.AspNetCore.ConcurrencyLimiter】,限制并发处理,请结合限流进行合理配置。
This commit is contained in:
@@ -24,7 +24,6 @@ namespace CoreCms.Net.Configuration
|
|||||||
public static readonly string AppConfigAppInterFaceUrl = AppSettingsHelper.GetContent("AppConfig", "AppInterFaceUrl");
|
public static readonly string AppConfigAppInterFaceUrl = AppSettingsHelper.GetContent("AppConfig", "AppInterFaceUrl");
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
#region 数据库================================================================================
|
#region 数据库================================================================================
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取数据库连接字符串
|
/// 获取数据库连接字符串
|
||||||
@@ -36,7 +35,6 @@ namespace CoreCms.Net.Configuration
|
|||||||
public static readonly string DbDbType = AppSettingsHelper.GetContent("ConnectionStrings", "DbType");
|
public static readonly string DbDbType = AppSettingsHelper.GetContent("ConnectionStrings", "DbType");
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
#region redis================================================================================
|
#region redis================================================================================
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -55,7 +53,6 @@ namespace CoreCms.Net.Configuration
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
#region AOP================================================================================
|
#region AOP================================================================================
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 事务切面开关
|
/// 事务切面开关
|
||||||
@@ -71,14 +68,12 @@ namespace CoreCms.Net.Configuration
|
|||||||
public static readonly string JwtConfigAudience = AppSettingsHelper.GetContent("JwtConfig", "Audience");
|
public static readonly string JwtConfigAudience = AppSettingsHelper.GetContent("JwtConfig", "Audience");
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
#region Cors跨域设置================================================================================
|
#region Cors跨域设置================================================================================
|
||||||
public static readonly string CorsPolicyName = AppSettingsHelper.GetContent("Cors", "PolicyName");
|
public static readonly string CorsPolicyName = AppSettingsHelper.GetContent("Cors", "PolicyName");
|
||||||
public static readonly bool CorsEnableAllIPs = AppSettingsHelper.GetContent("Cors", "EnableAllIPs").ObjToBool();
|
public static readonly bool CorsEnableAllIPs = AppSettingsHelper.GetContent("Cors", "EnableAllIPs").ObjToBool();
|
||||||
public static readonly string CorsIPs = AppSettingsHelper.GetContent("Cors", "IPs");
|
public static readonly string CorsIPs = AppSettingsHelper.GetContent("Cors", "IPs");
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
#region Middleware中间件================================================================================
|
#region Middleware中间件================================================================================
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 是否记录ip信息
|
/// 是否记录ip信息
|
||||||
@@ -108,8 +103,14 @@ namespace CoreCms.Net.Configuration
|
|||||||
/// 是否开启记录到数据库模式
|
/// 是否开启记录到数据库模式
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static readonly bool MiddlewareRecordAccessLogsEnabledDbMode = AppSettingsHelper.GetContent("Middleware", "RecordAccessLogs", "EnabledDbMode").ObjToBool();
|
public static readonly bool MiddlewareRecordAccessLogsEnabledDbMode = AppSettingsHelper.GetContent("Middleware", "RecordAccessLogs", "EnabledDbMode").ObjToBool();
|
||||||
|
/// <summary>
|
||||||
|
/// 并发限制(最大并发请求数)
|
||||||
|
/// </summary>
|
||||||
|
public static readonly int MiddlewareConcurrencyLimiterMaxConcurrentRequests = AppSettingsHelper.GetContent("Middleware", "ConcurrencyLimiter", "MaxConcurrentRequests").ObjToInt(100);
|
||||||
|
/// <summary>
|
||||||
|
/// 并发限制(最大请求数)
|
||||||
|
/// </summary>
|
||||||
|
public static readonly int MiddlewareConcurrencyLimiterRequestQueueLimit = AppSettingsHelper.GetContent("Middleware", "ConcurrencyLimiter", "RequestQueueLimit").ObjToInt(100);
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 支付================================================================================
|
#region 支付================================================================================
|
||||||
@@ -145,7 +146,6 @@ namespace CoreCms.Net.Configuration
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
#region 微信配置================================================================================
|
#region 微信配置================================================================================
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -49,6 +49,7 @@
|
|||||||
<PackageReference Include="Essensoft.Paylink.Alipay" Version="4.0.14" />
|
<PackageReference Include="Essensoft.Paylink.Alipay" Version="4.0.14" />
|
||||||
<PackageReference Include="Essensoft.Paylink.WeChatPay" Version="4.0.14" />
|
<PackageReference Include="Essensoft.Paylink.WeChatPay" Version="4.0.14" />
|
||||||
<PackageReference Include="IdentityModel" Version="6.0.0" />
|
<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.NewtonsoftJson" Version="7.0.0" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" 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" />
|
<PackageReference Include="Microsoft.AspNetCore.Mvc.Versioning" Version="5.0.0" />
|
||||||
|
|||||||
@@ -84,6 +84,15 @@ builder.Services.AddHttpContextSetup();
|
|||||||
//服务配置中加入AutoFac控制器替换规则。
|
//服务配置中加入AutoFac控制器替换规则。
|
||||||
builder.Services.Replace(ServiceDescriptor.Transient<IControllerActivator, ServiceBasedControllerActivator>());
|
builder.Services.Replace(ServiceDescriptor.Transient<IControllerActivator, ServiceBasedControllerActivator>());
|
||||||
|
|
||||||
|
//并发限制-使用队列策略模式
|
||||||
|
builder.Services.AddQueuePolicy(options =>
|
||||||
|
{
|
||||||
|
//最大并发请求数,超过之后,进行排队
|
||||||
|
options.MaxConcurrentRequests = AppSettingsConstVars.MiddlewareConcurrencyLimiterMaxConcurrentRequests;
|
||||||
|
//最大请求数,超过之后,返回503
|
||||||
|
options.RequestQueueLimit = AppSettingsConstVars.MiddlewareConcurrencyLimiterRequestQueueLimit;
|
||||||
|
});
|
||||||
|
|
||||||
//注册mvc,注册razor引擎视图
|
//注册mvc,注册razor引擎视图
|
||||||
builder.Services.AddMvc(options =>
|
builder.Services.AddMvc(options =>
|
||||||
{
|
{
|
||||||
@@ -151,6 +160,7 @@ builder.Host.UseNLog();
|
|||||||
var app = builder.Build();
|
var app = builder.Build();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#region 解决Ubuntu Nginx 代理不能获取IP问题===================================================================
|
#region 解决Ubuntu Nginx 代理不能获取IP问题===================================================================
|
||||||
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
app.UseForwardedHeaders(new ForwardedHeadersOptions
|
||||||
{
|
{
|
||||||
@@ -159,7 +169,8 @@ app.UseForwardedHeaders(new ForwardedHeadersOptions
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 中间件注册===================================================================
|
#region 中间件注册===================================================================
|
||||||
|
// 启用并发限制数中间件
|
||||||
|
app.UseConcurrencyLimiter();
|
||||||
// 开启Ip限流
|
// 开启Ip限流
|
||||||
app.UseIpLimitMiddle();
|
app.UseIpLimitMiddle();
|
||||||
// 记录请求与返回数据 (注意开启权限,不然本地无法写入)
|
// 记录请求与返回数据 (注意开启权限,不然本地无法写入)
|
||||||
@@ -168,7 +179,6 @@ app.UseRequestResponseLog();
|
|||||||
app.UseRecordAccessLogsMildd(GlobalEnumVars.CoreShopSystemCategory.Admin.ToString());
|
app.UseRecordAccessLogsMildd(GlobalEnumVars.CoreShopSystemCategory.Admin.ToString());
|
||||||
// 记录ip请求 (注意开启权限,不然本地无法写入)
|
// 记录ip请求 (注意开启权限,不然本地无法写入)
|
||||||
app.UseIpLogMildd();
|
app.UseIpLogMildd();
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
app.UseSwagger().UseSwaggerUI(c =>
|
app.UseSwagger().UseSwaggerUI(c =>
|
||||||
|
|||||||
@@ -59,6 +59,12 @@
|
|||||||
//开启Ip限流
|
//开启Ip限流
|
||||||
"IpRateLimit": {
|
"IpRateLimit": {
|
||||||
"Enabled": false
|
"Enabled": false
|
||||||
|
},
|
||||||
|
"ConcurrencyLimiter": {
|
||||||
|
//最大并发请求数
|
||||||
|
"MaxConcurrentRequests": 100,
|
||||||
|
//最大请求数
|
||||||
|
"RequestQueueLimit": 100
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
//ip限流规则设置
|
//ip限流规则设置
|
||||||
|
|||||||
@@ -57,6 +57,7 @@
|
|||||||
<PackageReference Include="Hangfire.Core" Version="1.7.31" />
|
<PackageReference Include="Hangfire.Core" Version="1.7.31" />
|
||||||
<PackageReference Include="Hangfire.Dashboard.BasicAuthorization" Version="1.0.2" />
|
<PackageReference Include="Hangfire.Dashboard.BasicAuthorization" Version="1.0.2" />
|
||||||
<PackageReference Include="Hangfire.Redis.StackExchange" Version="1.8.6" />
|
<PackageReference Include="Hangfire.Redis.StackExchange" Version="1.8.6" />
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.ConcurrencyLimiter" Version="7.0.0" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="7.0.0" />
|
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="7.0.0" />
|
||||||
<PackageReference Include="Microsoft.Data.SqlClient" Version="5.0.1" />
|
<PackageReference Include="Microsoft.Data.SqlClient" Version="5.0.1" />
|
||||||
<PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="3.1.6" />
|
<PackageReference Include="Microsoft.DotNet.PlatformAbstractions" Version="3.1.6" />
|
||||||
|
|||||||
@@ -95,6 +95,15 @@ builder.Services.AddHttpContextSetup();
|
|||||||
//服务配置中加入AutoFac控制器替换规则。
|
//服务配置中加入AutoFac控制器替换规则。
|
||||||
builder.Services.Replace(ServiceDescriptor.Transient<IControllerActivator, ServiceBasedControllerActivator>());
|
builder.Services.Replace(ServiceDescriptor.Transient<IControllerActivator, ServiceBasedControllerActivator>());
|
||||||
|
|
||||||
|
//并发限制-使用队列策略模式
|
||||||
|
builder.Services.AddQueuePolicy(options =>
|
||||||
|
{
|
||||||
|
//最大并发请求数,超过之后,进行排队
|
||||||
|
options.MaxConcurrentRequests = AppSettingsConstVars.MiddlewareConcurrencyLimiterMaxConcurrentRequests;
|
||||||
|
//最大请求数,超过之后,返回503
|
||||||
|
options.RequestQueueLimit = AppSettingsConstVars.MiddlewareConcurrencyLimiterRequestQueueLimit;
|
||||||
|
});
|
||||||
|
|
||||||
//注册mvc,注册razor引擎视图
|
//注册mvc,注册razor引擎视图
|
||||||
builder.Services.AddMvc(options =>
|
builder.Services.AddMvc(options =>
|
||||||
{
|
{
|
||||||
@@ -170,7 +179,8 @@ app.UseForwardedHeaders(new ForwardedHeadersOptions
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 中间件注册===================================================================
|
#region 中间件注册===================================================================
|
||||||
|
// 启用并发限制数中间件
|
||||||
|
app.UseConcurrencyLimiter();
|
||||||
// 开启Ip限流
|
// 开启Ip限流
|
||||||
app.UseIpLimitMiddle();
|
app.UseIpLimitMiddle();
|
||||||
// 记录请求与返回数据 (注意开启权限,不然本地无法写入)
|
// 记录请求与返回数据 (注意开启权限,不然本地无法写入)
|
||||||
@@ -179,7 +189,6 @@ app.UseRequestResponseLog();
|
|||||||
app.UseRecordAccessLogsMildd(GlobalEnumVars.CoreShopSystemCategory.Api.ToString());
|
app.UseRecordAccessLogsMildd(GlobalEnumVars.CoreShopSystemCategory.Api.ToString());
|
||||||
// 记录ip请求 (注意开启权限,不然本地无法写入)
|
// 记录ip请求 (注意开启权限,不然本地无法写入)
|
||||||
app.UseIpLogMildd();
|
app.UseIpLogMildd();
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
//强制显示中文
|
//强制显示中文
|
||||||
|
|||||||
@@ -59,6 +59,12 @@
|
|||||||
//开启Ip限流
|
//开启Ip限流
|
||||||
"IpRateLimit": {
|
"IpRateLimit": {
|
||||||
"Enabled": false
|
"Enabled": false
|
||||||
|
},
|
||||||
|
"ConcurrencyLimiter": {
|
||||||
|
//最大并发请求数
|
||||||
|
"MaxConcurrentRequests": 100,
|
||||||
|
//最大请求数
|
||||||
|
"RequestQueueLimit": 100
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
//ip限流规则设置
|
//ip限流规则设置
|
||||||
|
|||||||
Reference in New Issue
Block a user