重复请求拦截修改

Test_IRC_Net8
he 2025-10-16 14:28:15 +08:00
parent 9a488610da
commit 74056167d6
11 changed files with 26 additions and 12 deletions

View File

@ -101,7 +101,7 @@ builder.Services.AddControllers(options =>
options.Filters.Add<UnitOfWorkFilter>();
options.Filters.Add<LimitUserRequestAuthorization>();
options.Filters.Add<TrialGlobalLimitActionFilter>();
//options.Filters.Add<RequestDuplicationFilter>();
options.Filters.Add<RequestDuplicationFilter>();
})
.AddNewtonsoftJsonSetup(builder.Services); // NewtonsoftJson 序列化 处理

View File

@ -72,7 +72,7 @@
},
"RequestDuplicationOptions": {
"IsEnabled": true,
"DuplicationWindowMs": 500,
"DuplicationWindowMs": 200,
"CacheTimeSeconds": 5,
"ExcludedPaths": [
]

View File

@ -81,7 +81,7 @@
},
"RequestDuplicationOptions": {
"IsEnabled": true,
"DuplicationWindowMs": 500,
"DuplicationWindowMs": 200,
"CacheTimeSeconds": 5,
"ExcludedPaths": [
]

View File

@ -166,7 +166,7 @@
//
"IsEnabled": true,
//
"DuplicationWindowMs": 500,
"DuplicationWindowMs": 200,
//
"CacheTimeSeconds": 5,
"ExcludedPaths": [

View File

@ -94,7 +94,7 @@
},
"RequestDuplicationOptions": {
"IsEnabled": true,
"DuplicationWindowMs": 500,
"DuplicationWindowMs": 200,
"CacheTimeSeconds": 5,
"ExcludedPaths": [
]

View File

@ -88,7 +88,7 @@
},
"RequestDuplicationOptions": {
"IsEnabled": true,
"DuplicationWindowMs": 500,
"DuplicationWindowMs": 200,
"CacheTimeSeconds": 5,
"ExcludedPaths": [
]

View File

@ -95,7 +95,7 @@
},
"RequestDuplicationOptions": {
"IsEnabled": true,
"DuplicationWindowMs": 500,
"DuplicationWindowMs": 200,
"CacheTimeSeconds": 5,
"ExcludedPaths": [
]

View File

@ -95,7 +95,7 @@
},
"RequestDuplicationOptions": {
"IsEnabled": true,
"DuplicationWindowMs": 500,
"DuplicationWindowMs": 200,
"CacheTimeSeconds": 5,
"ExcludedPaths": [
]

View File

@ -102,7 +102,7 @@
},
"RequestDuplicationOptions": {
"IsEnabled": true,
"DuplicationWindowMs": 500,
"DuplicationWindowMs": 200,
"CacheTimeSeconds": 5,
"ExcludedPaths": [
]

View File

@ -77,7 +77,7 @@
},
"RequestDuplicationOptions": {
"IsEnabled": true,
"DuplicationWindowMs": 500,
"DuplicationWindowMs": 200,
"CacheTimeSeconds": 5,
"ExcludedPaths": [
]

View File

@ -14,7 +14,9 @@ namespace IRaCIS.Core.Application.BusinessFilter.LegacyController
using Microsoft.AspNetCore.Components.Endpoints;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Controllers;
using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.AspNetCore.Mvc.ModelBinding;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
@ -48,8 +50,20 @@ namespace IRaCIS.Core.Application.BusinessFilter.LegacyController
/// <returns>返回的对象</returns>
public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
{
this.Intoparam = JsonConvert.SerializeObject(
context.ActionArguments.TryGetValue("inQuery", out var v) ? v : null);
Dictionary<string, object?> dic = new Dictionary<string, object?>();
var desc = context.ActionDescriptor as ControllerActionDescriptor;
foreach (var p in desc.Parameters)
{
// 关键判断:绑定源是否是 Services
if (p.BindingInfo?.BindingSource == BindingSource.Services) continue;
// 普通参数,取值
if (context.ActionArguments.TryGetValue(p.Name, out var value) && value != null)
{
dic.Add(p.Name, value);
}
}
this.Intoparam = JsonConvert.SerializeObject(dic);
try
{
this.RequestDuplication();