123456789101112131415161718192021222324 |
- using AspNetCoreRateLimit;
- namespace Extensions
- {
- public static class IPRateExtension
- {
- public static void AddIPRate(this IServiceCollection services, IConfiguration configuration)
- {
- if (services == null) throw new ArgumentNullException(nameof(services));
-
- services.Configure<IpRateLimitOptions>(configuration.GetSection("IpRateLimiting"));
-
- services.Configure<IpRateLimitPolicies>(configuration.GetSection("IpRateLimitPolicies"));
-
- services.AddSingleton<IIpPolicyStore, MemoryCacheIpPolicyStore>();
- services.AddSingleton<IRateLimitCounterStore, MemoryCacheRateLimitCounterStore>();
-
- services.AddSingleton<IRateLimitConfiguration, RateLimitConfiguration>();
- services.AddSingleton<IProcessingStrategy, AsyncKeyLockProcessingStrategy>();
- }
- }
- }
|