Class ThrottlingSentinelMiddleware
- Namespace
- Cuemon.AspNetCore.Http.Throttling
- Assembly
- Cuemon.AspNetCore.dll
Provides an API throttling middleware implementation for ASP.NET Core.
public class ThrottlingSentinelMiddleware : ConfigurableMiddleware<IThrottlingCache, ThrottlingSentinelOptions>, IConfigurable<ThrottlingSentinelOptions>
- Inheritance
-
ThrottlingSentinelMiddleware
- Implements
- Inherited Members
Examples
The following example demonstrates how to register the to enforce rate limiting in the ASP.NET Core pipeline.
using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Options;
namespace Cuemon.AspNetCore.Http.Throttling;
public static class ThrottlingSentinelMiddlewareExample
{
public static async Task DemonstrateAsync()
{
var context = new DefaultHttpContext();
var options = Options.Create(new ThrottlingSentinelOptions
{
ContextResolver = _ => "client-1",
Quota = new ThrottleQuota(10, TimeSpan.FromMinutes(1))
});
var middleware = new ThrottlingSentinelMiddleware(
httpContext =>
{
httpContext.Response.StatusCode = StatusCodes.Status200OK;
return Task.CompletedTask;
},
options);
await middleware.InvokeAsync(context, new MemoryThrottlingCache());
Console.WriteLine(context.Response.Headers[options.Value.RateLimitHeaderName].ToString());
}
}
Constructors
ThrottlingSentinelMiddleware(RequestDelegate, IOptions<ThrottlingSentinelOptions>)
Initializes a new instance of the ThrottlingSentinelMiddleware class.
public ThrottlingSentinelMiddleware(RequestDelegate next, IOptions<ThrottlingSentinelOptions> setup)
Parameters
nextRequestDelegateThe delegate of the request pipeline to invoke.
setupIOptions<ThrottlingSentinelOptions>The ThrottlingSentinelOptions which need to be configured.
ThrottlingSentinelMiddleware(RequestDelegate, Action<ThrottlingSentinelOptions>)
Initializes a new instance of the ThrottlingSentinelMiddleware class.
public ThrottlingSentinelMiddleware(RequestDelegate next, Action<ThrottlingSentinelOptions> setup)
Parameters
nextRequestDelegateThe delegate of the request pipeline to invoke.
setupAction<ThrottlingSentinelOptions>The ThrottlingSentinelOptions which need to be configured.
Methods
InvokeAsync(HttpContext, IThrottlingCache)
Executes the ThrottlingSentinelMiddleware.
public override Task InvokeAsync(HttpContext context, IThrottlingCache di)
Parameters
contextHttpContextThe context of the current request.
diIThrottlingCacheThe dependency injected IThrottlingCache of InvokeAsync(HttpContext, IThrottlingCache).
Returns
- Task
A task that represents the execution of this middleware.