FireflySoft.RateLimit.AspNetCore
3.0.0
.NET 5.0
.NET Core 3.1
dotnet add package FireflySoft.RateLimit.AspNetCore --version 3.0.0
NuGet\Install-Package FireflySoft.RateLimit.AspNetCore -Version 3.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FireflySoft.RateLimit.AspNetCore" Version="3.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add FireflySoft.RateLimit.AspNetCore --version 3.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: FireflySoft.RateLimit.AspNetCore, 3.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install FireflySoft.RateLimit.AspNetCore as a Cake Addin
#addin nuget:?package=FireflySoft.RateLimit.AspNetCore&version=3.0.0
// Install FireflySoft.RateLimit.AspNetCore as a Cake Tool
#tool nuget:?package=FireflySoft.RateLimit.AspNetCore&version=3.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Introduction
Fireflysoft.RateLimit is a rate limiting library based on .Net standard. Its core is simple and lightweight, and can flexibly meet the rate limiting needs of many scenarios.
Features
- Multiple rate limiting algorithms: built-in fixed window, sliding window, leaky bucket, token bucket, and can be extended.
- Multiple counting storage: memory and Redis (including cluster).
- Distributed friendly: supports unified counting of distributed programs with Redis storage.
- Flexible rate limiting targets: each data can be extracted from the request to set rate limiting targets.
- Support rate limit penalty: the client can be locked for a period of time after the rate limit is triggered.
- Time window enhancement: support to the millisecond level; support starting from the starting point of time periods such as seconds, minutes, hours, dates, etc.
- Real-time tracking: the number of requests processed and the remaining allowed requests in the current counting cycle, as well as the reset time of the counting cycle.
- Dynamically change the rules: support the dynamic change of the rate limiting rules when the program is running.
- Custom error: you can customize the error code and error message after the current limit is triggered.
- Universality: in principle, it can meet any scenario that requires rate limiting.
Usage
The following code calls the rate-limit middleware from Startup.Configure:
public void ConfigureServices(IServiceCollection services)
{
...
services.AddRateLimit(new InProcessFixedWindowAlgorithm(
new[] {
new FixedWindowRule()
{
ExtractTarget = context =>
{
return (context as HttpContext).Request.Path.Value;
},
CheckRuleMatching = context =>
{
return true;
},
Name="default limit rule",
LimitNumber=30,
StatWindow=TimeSpan.FromSeconds(1)
}
})
);
...
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
app.UseRateLimit();
...
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 is compatible. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. |
.NET Core | netcoreapp3.1 is compatible. |
Compatible target framework(s)
Additional computed target framework(s)
Learn more about Target Frameworks and .NET Standard.
-
.NETCoreApp 3.1
- FireflySoft.RateLimit.Core (>= 3.0.0)
-
net5.0
- FireflySoft.RateLimit.Core (>= 3.0.0)
-
net6.0
- FireflySoft.RateLimit.Core (>= 3.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Return X-RateLimit-XXX in HTTP response.