Rate-Limiting-Middleware konfigurieren
Wenden Sie Ratenbegrenzungen pro Endpunkt und Richtlinie an.
Rate-Limiting-Middleware konfigurieren ist eine kostenlose C# Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C# Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C# Academy-Kurs umfasst insgesamt 4 Lektionen.
AddRateLimiter
Die Konfiguration beginnt mit AddRateLimiter im Dienstcontainer. Sie definieren eine oder mehrere benannte Richtlinien sowie optional einen globalen Statuscode für abgelehnte Anfragen.
builder.Services.AddRateLimiter(options =>
{
options.RejectionStatusCode =
StatusCodes.Status429TooManyRequests;
});Eine Richtlinie für ein festes Zeitfenster
AddFixedWindowLimiter registriert eine benannte Richtlinie. Legen Sie das Anfragelimit, die Länge des Zeitfensters und das Verhalten der Warteschlange fest.
options.AddFixedWindowLimiter("fixed", limiter =>
{
limiter.PermitLimit = 100;
limiter.Window = TimeSpan.FromMinutes(1);
limiter.QueueProcessingOrder = QueueProcessingOrder.OldestFirst;
limiter.QueueLimit = 0;
});Eine Richtlinie für ein gleitendes Zeitfenster
AddSlidingWindowLimiter fügt SegmentsPerWindow hinzu, um die Granularität der Glättung zu steuern.
options.AddSlidingWindowLimiter("sliding", limiter =>
{
limiter.PermitLimit = 100;
limiter.Window = TimeSpan.FromMinutes(1);
limiter.SegmentsPerWindow = 6;
limiter.QueueLimit = 0;
});Eine Token-Bucket-Richtlinie
AddTokenBucketLimiter legt die Bucket-Größe und die Auffüllrate fest.
options.AddTokenBucketLimiter("token", limiter =>
{
limiter.TokenLimit = 100;
limiter.TokensPerPeriod = 20;
limiter.ReplenishmentPeriod = TimeSpan.FromSeconds(10);
limiter.QueueLimit = 0;
});Eine Parallelitätsrichtlinie
AddConcurrencyLimiter begrenzt die Anzahl gleichzeitig bearbeiteter Anfragen.
options.AddConcurrencyLimiter("concurrent", limiter =>
{
limiter.PermitLimit = 5;
limiter.QueueLimit = 10;
limiter.QueueProcessingOrder = QueueProcessingOrder.OldestFirst;
});Die Middleware hinzufügen
Aktivieren Sie Rate Limiting in der Pipeline mit UseRateLimiter. Platzieren Sie die Middleware frühzeitig nach dem Routing.
var app = builder.Build();
app.UseRateLimiter();
app.MapControllers();RequireRateLimiting
Wenden Sie eine benannte Richtlinie mit RequireRateLimiting auf Endpunkte an (minimale API) oder verwenden Sie bei Controllern das Attribut [EnableRateLimiting].
app.MapGet("/search", () => Results.Ok())
.RequireRateLimiting("token");
// Controller equivalent:
// [EnableRateLimiting("token")]Bestimmte Endpunkte ausnehmen
Nehmen Sie einen Endpunkt mit DisableRateLimiting oder [DisableRateLimiting] von einem Gruppen- oder globalen Begrenzer aus.
app.MapGet("/health", () => Results.Ok())
.DisableRateLimiting();Ein globaler Begrenzer mit Partitionen
GlobalLimiter gilt für jede Anfrage. Verwenden Sie PartitionedRateLimiter.Create, um jedem Benutzer oder jeder IP-Adresse einen eigenen Zähler zu geben.
options.GlobalLimiter = PartitionedRateLimiter.Create<HttpContext, string>(
context =>
{
var key = context.User.Identity?.Name
?? context.Connection.RemoteIpAddress?.ToString()
?? "anon";
return RateLimitPartition.GetFixedWindowLimiter(key, _ =>
new FixedWindowRateLimiterOptions
{
PermitLimit = 100,
Window = TimeSpan.FromMinutes(1)
});
});Die Ablehnung anpassen
Mit OnRejected können Sie einen Retry-After-Header oder einen verständlichen Antworttext hinzufügen, wenn eine Anfrage gedrosselt wird.
options.OnRejected = async (context, token) =>
{
if (context.Lease.TryGetMetadata(
MetadataName.RetryAfter, out var retry))
context.HttpContext.Response.Headers.RetryAfter =
((int)retry.TotalSeconds).ToString();
await context.HttpContext.Response
.WriteAsync("Rate limit exceeded.", token);
};Auf eine Routengruppe anwenden
Weisen Sie einer ganzen Routengruppe eine Richtlinie zu, damit jeder darin enthaltene Endpunkt dasselbe Limit verwendet.
var api = app.MapGroup("/api")
.RequireRateLimiting("fixed");
api.MapGet("/products", () => Results.Ok());
api.MapGet("/orders", () => Results.Ok());Kurzprüfung
Bestätigen Sie die Einrichtung der Middleware.
Zusammenfassung
Sie haben Rate Limiting konfiguriert:
AddRateLimiterdefiniert Richtlinien für feste und gleitende Zeitfenster, Token-Buckets und Parallelität.UseRateLimiteraktiviert die Middleware;RequireRateLimitingwendet eine Richtlinie an.GlobalLimitermitPartitionedRateLimiterstellt Zähler pro Client bereit.OnRejectedpasst die 429-Antwort an.
Als Nächstes: Output Caching.
Häufig gestellte Fragen
Ist die Lektion „Rate-Limiting-Middleware konfigurieren“ kostenlos?
Ja — der vollständige Text von „Rate-Limiting-Middleware konfigurieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C# Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C# Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Rate-Limiting-Middleware konfigurieren“?
Wenden Sie Ratenbegrenzungen pro Endpunkt und Richtlinie an. Du übst C# Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um C# Academy zu starten?
Keine Vorkenntnisse erforderlich. C# Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Rate-Limiting-Middleware konfigurieren“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser C# Academy-Lektion Code schreiben und ausführen?
Ja. Jede C# Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Algorithmen zur Ratenbegrenzung
- Rate-Limiting-Middleware konfigurieren
- Grundlagen des Output-Caching
- Cache-Richtlinien und Invalidierung