Skip to content

Commit 1eddbe7

Browse files
Copilotwadepickett
andauthored
Add code sample from source release notes to rate-limiting include file
Agent-Logs-Url: https://github.com/dotnet/AspNetCore.Docs/sessions/ec595e41-7255-4739-a28b-d3514c2caf95 Co-authored-by: wadepickett <10985336+wadepickett@users.noreply.github.com>
1 parent 380422f commit 1eddbe7

1 file changed

Lines changed: 19 additions & 0 deletions

File tree

aspnetcore/release-notes/aspnetcore-11/includes/rate-limiting-retry-after-preview4.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,25 @@ The <xref:System.Threading.RateLimiting.FixedWindowRateLimiter> now reports a <x
44

55
Previously, the `RetryAfter` metadata wasn't reliably set, which meant rejected responses either lacked the header or contained an unhelpful value. With this fix, any app that uses the rate-limiting middleware with a <xref:System.Threading.RateLimiting.FixedWindowRateLimiter> benefits from correct `Retry-After` headers automatically.
66

7+
The following example shows how a rate limiter lease exposes the `RetryAfter` metadata after a failed acquisition:
8+
9+
```csharp
10+
using System.Threading.RateLimiting;
11+
12+
var limiter = new FixedWindowRateLimiter(new()
13+
{
14+
PermitLimit = 10,
15+
Window = TimeSpan.FromSeconds(1),
16+
QueueLimit = 0,
17+
});
18+
19+
RateLimitLease lease = limiter.AttemptAcquire();
20+
if (!lease.IsAcquired && lease.TryGetMetadata(MetadataName.RetryAfter, out TimeSpan retry))
21+
{
22+
Console.WriteLine($"Retry after {retry}.");
23+
}
24+
```
25+
726
Additional fixes in `System.Threading.RateLimiting` resolve an issue where <xref:System.Threading.RateLimiting.TokenBucketRateLimiter> mishandled partial token refills during zero-permit acquisition, and improve <xref:System.Threading.RateLimiting.ChainedRateLimiter%601> to correctly forward idle-duration and replenishment behavior from its inner limiters.
827

928
For more information, see [Rate limiting middleware in ASP.NET Core](/aspnet/core/performance/rate-limit).

0 commit comments

Comments
 (0)