using AspNetCoreRateLimit; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using System; namespace IRaCIS.Core.API { /// <summary> /// IPLimit限流 启动服务 /// </summary> public static class IpPolicyRateLimitSetup { public static void AddIpPolicyRateLimitSetup(this IServiceCollection services, IConfiguration Configuration) { // needed to store rate limit counters and ip rules services.AddMemoryCache(); //load general configuration from appsettings.json services.Configure<IpRateLimitOptions>(Configuration.GetSection("IpRateLimiting")); //load ip rules from appsettings.json //services.Configure<IpRateLimitPolicies>(Configuration.GetSection("IpRateLimitPolicies")); // inject counter and rules stores services.AddInMemoryRateLimiting(); //services.AddDistributedRateLimiting<AsyncKeyLockProcessingStrategy>(); //services.AddDistributedRateLimiting<RedisProcessingStrategy>(); //services.AddRedisRateLimiting(); // configuration (resolvers, counter key builders) services.AddSingleton<IRateLimitConfiguration, RateLimitConfiguration>(); } } }