Start Debugging

ASP.NET Core 11 cheat sheet

The ASP.NET Core 11 bits worth bookmarking.

This site uses Walter, an AI agent, for research, writing, and maintenance. Editorial and verification process

Every post on the site about ASP.NET Core 11 - minimal APIs, OpenAPI, authentication, rate limiting, observability, Native AOT, and the Blazor rendering changes in the .NET 11 cycle.

What to read first

Settle the forks: minimal APIs vs controllers leads, Blazor Server vs WebAssembly vs United in .NET 11 settles the UI hosting model, and gRPC vs REST vs SignalR picks the transport. To secure it, JWT vs cookie authentication leads, then validating issuer, audience, and lifetime is the config people get wrong, and endpoints that 401 instead of redirecting to login is the upgrade surprise. Per-endpoint rate limiting (chaining limiters? CreateChained calls the first one twice per request) and OpenAPI auth flows come first; a nullable controller response needs an explicit hint. MapIdentityApi has no switch to skip an endpoint, and a cookie that Response.Cookies.Append never sets is the cookie-side snag. On hot paths, Native AOT with minimal APIs is the win.

In the pipeline, endpoint filters vs middleware settles that fork, and for caching, output vs response caching is the call; multi-tenant apps should read Redis key prefix vs separate database vs separate instance before sharing one cache. For configuration, IOptions vs IOptionsSnapshot vs IOptionsMonitor picks the lifetime. For observability, OpenTelemetry and Serilog and Seq are the starting points.

Coming from ASP.NET Framework? Start with migrating System.Web.HttpContext to ASP.NET Core.

What’s on this page

The list below auto-collects posts tagged aspnetcore or aspnet, newest first.

The companion .NET 11 tracker collects the broader release; many posts overlap.

Index (131 posts)

2026 / 11

  • How to accept HTTP/2 over cleartext (h2c) in Kestrel behind nginx on .NET 10

    Kestrel on .NET 10 only speaks h2c on an endpoint set to HttpProtocols.Http2, and only to clients that use prior knowledge. Http1AndHttp2 without TLS silently falls back to HTTP/1.1, Upgrade: h2c is ignored, and nginx needs proxy_http_version 2 (1.29.4+, stable 1.30) or grpc_pass to talk HTTP/2 upstream. Checked with curl and HttpClient on ASP.NET Core 10.0.10.

  • How to initialize interdependent async singletons at startup in ASP.NET Core

    Give each singleton a memoized InitializeAsync that awaits its own dependencies, then await them all from IHostedLifecycleService.StartingAsync. Registration order stops mattering, Kestrel does not accept requests until init finishes, and a failure stops the host. Compared against init before app.Run, IHostedService.StartAsync, and a BackgroundService with a readiness check on ASP.NET Core 10.0.10.

  • How to Run JS Interop on an Element That Was Just Rendered Conditionally in Blazor

    Blazor has no nextTick(), but you can build one: a TaskCompletionSource completed in OnAfterRenderAsync. Here is why the @ref is null or stale right after you flip an @if, which common workarounds fail, and a NextRenderAsync helper verified on .NET 10 in both InteractiveServer and InteractiveWebAssembly.

  • How to make UseForwardedHeaders work behind nginx in Docker on .NET 10

    Behind nginx and Docker, ASP.NET Core's ForwardedHeadersMiddleware silently ignores X-Forwarded-For and X-Forwarded-Proto unless the connecting proxy is in KnownIPNetworks or KnownProxies, and ForwardLimit decides how many hops it walks. The four silent-ignore rules, the KnownNetworks to KnownIPNetworks change in .NET 10, and a runnable repro checked on .NET 10.0.10.

  • Why is the first limiter in PartitionedRateLimiter.CreateChained called twice per request?

    ChainedPartitionedRateLimiter walks each limiter once, but the ASP.NET Core rate limiting middleware calls the chain twice when the first pass fails: AttemptAcquire, then AcquireAsync. With fixed window or token bucket limiters a rejected request burns two permits from the first limiter, and a queued request does too. Reproduced on ASP.NET Core 10.0.10 and 11.0 RC3, with a wrapper that makes the middleware walk the chain once.

  • Syncfusion Blazor Toolkit 2.0.1: 17 MIT Components, No License Key, No Data Grid

    On October 29, 2026 Microsoft announced Syncfusion as a Blazor contributor. The headline is Syncfusion.Blazor.Toolkit 2.0.1: 17 MIT-licensed components for net8.0, net9.0 and net10.0, free for commercial use with no license key. Here is what is in it, how to wire it up, and where the commercial line is drawn.

2026 / 10

2026 / 09

2026 / 08

2026 / 07

2026 / 06

2026 / 05

2026 / 04

2026 / 01

2023 / 06

2020 / 12

All pillars Home