Asp.net core 为什么可以';在使用Asp.Net Core的此AspNetCoreRateLimit中间件时,我无法获得启动的速率限制
谁能告诉我我做错了什么。。。我使用这个中间件来限制客户端可以对我的端点进行的API调用的数量: 我不能让这个利率限制生效。以下是我的Startup.cs(相关部分):Asp.net core 为什么可以';在使用Asp.Net Core的此AspNetCoreRateLimit中间件时,我无法获得启动的速率限制,asp.net-core,Asp.net Core,谁能告诉我我做错了什么。。。我使用这个中间件来限制客户端可以对我的端点进行的API调用的数量: 我不能让这个利率限制生效。以下是我的Startup.cs(相关部分): public void配置服务(IServiceCollection服务) { //需要从appsettings.json加载配置 services.AddOptions(); //需要存储速率限制计数器和ip规则 services.AddMemoryCache(); //从appsettings.json加载常规配置 serv
public void配置服务(IServiceCollection服务)
{
//需要从appsettings.json加载配置
services.AddOptions();
//需要存储速率限制计数器和ip规则
services.AddMemoryCache();
//从appsettings.json加载常规配置
services.Configure(Configuration.GetSection(“IpRateLimiting”);
//注入计数器和规则存储
services.AddSingleton();
services.AddSingleton();
// https://github.com/aspnet/Hosting/issues/793
//默认情况下,未注册IHttpContextAccessor服务。
//clientId/clientIp解析器使用它。
services.AddSingleton();
//配置(解析程序、计数器密钥生成器)
services.AddSingleton();
//配置强类型配置设置对象
var appsetingssection=Configuration.GetSection(“AppSettings”);
services.Configure(应用设置部分);
var appSettings=appSettingsSection.Get();
services.AddCors(选项=>
{
options.AddPolicy(“AllowSpecificCorigin”,
corsBuilder=>corsBuilder.WithOrigins(“*”)
.AllowAnyMethod()
.AllowAnyHeader());
});
services.AddControllers();
}
//此方法由运行时调用。使用此方法配置HTTP请求管道。
public void配置(IApplicationBuilder应用程序、IWebHostEnvironment环境、iLogger工厂)
{
//确保CORS调用在使用MVC之前
应用程序UseCors(“AllowSpecificCorigin”);
loggerFactory.AddLog4Net();
if(env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseIpRateLimiting();
app.UseHttpsRedirection();
app.UseRouting();
app.UseEndpoints(端点=>
{
endpoints.MapControllers();
});
}
和我的appsettings.json文件:
"IpRateLimiting": {
"EnableEndpointRateLimiting": true,
"StackBlockedRequests": false,
"RealIPHeader": "X-Real-IP",
"ClientIdHeader": "X-ClientId",
"HttpStatusCode": 429,
"GeneralRules": [
{
"Endpoint": "*",
"Period": "10s",
"Limit": 1
}
]
}
仅供参考,我尝试过将EnableEndpointRateLimiting设置为“真”和“假”,但都没有效果
我的测试API调用正在进行。。。当我期待被扼杀的时候 这对我来说是一个非常愚蠢的错误。我在AppSettings.json文件的“AppSettings”部分嵌套了IpRateLimiting会话,而该会话本应在根级别指定。您应该将其作为已接受的答案,看看您是如何回答问题的:-)