Table of Contents

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

next RequestDelegate

The delegate of the request pipeline to invoke.

setup IOptions<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

next RequestDelegate

The delegate of the request pipeline to invoke.

setup Action<ThrottlingSentinelOptions>

The ThrottlingSentinelOptions which need to be configured.

Methods

InvokeAsync(HttpContext, IThrottlingCache)

public override Task InvokeAsync(HttpContext context, IThrottlingCache di)

Parameters

context HttpContext

The context of the current request.

di IThrottlingCache

The dependency injected IThrottlingCache of InvokeAsync(HttpContext, IThrottlingCache).

Returns

Task

A task that represents the execution of this middleware.