.NET 11 Preview 3 includes new ASP.NET Core features and improvements:
- Zstandard response compression and request decompression
- Virtualize adapts to variable-height items at runtime
- HTTP/3 starts processing requests earlier
- Bug fixes
- Community contributors
ASP.NET Core updates in .NET 11:
ASP.NET Core now supports Zstandard (zstd) for both response compression and request decompression (dotnet/aspnetcore #65479). This adds zstd support to the existing response-compression and request-decompression middleware and enables it by default.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddResponseCompression();
builder.Services.AddRequestDecompression();
builder.Services.Configure<ZstandardCompressionProviderOptions>(options =>
{
options.CompressionOptions = new ZstandardCompressionOptions
{
Quality = 6 // 1-22, higher = better compression, slower
};
});Thank you @manandre for this contribution!
Blazor's Virtualize<TItem> component no longer assumes every item has the same height. The component now adapts to measured item sizes at runtime, which reduces incorrect spacing and scrolling when item heights vary. These updates include an update to the default value of OverscanCount from 3 to 15 to increase the precision of average item height calculations. QuickGrid continues to use an OverscanCount of 3 to reduce the potential for adverse performance impact (dotnet/aspnetcore #64964).
<Virtualize Items="messages" Context="message">
<article class="message-card">
<h4>@message.Author</h4>
<p>@message.Text</p>
</article>
</Virtualize>Kestrel now starts processing HTTP/3 requests without waiting for the control stream and SETTINGS frame first, which reduces first-request latency on new connections (dotnet/aspnetcore #65399).
- Blazor
- Fixed a null reference error in
Virtualize(dotnet/aspnetcore #65207). - Fixed scroll-container detection when
overflow-xis set (dotnet/aspnetcore #65744). - Fixed the Web Worker template in published Blazor WebAssembly apps (dotnet/aspnetcore #65885).
- Fixed TempData lazy loading:
Get,Remove,Keep, and enumeration now correctly trigger lazy loading (dotnet/aspnetcore #65722). - Fixed
IJSObjectReferenceleak inResourceCollectionProvider(dotnet/aspnetcore #65606). - Fixed cache headers for the Blazor resource collection endpoint to include
no-transformand correctVaryheaders (dotnet/aspnetcore #65513).
- Fixed a null reference error in
- Data Protection
- Fixed
ManagedAuthenticatedEncryptorhash calculation and comparison on .NET Framework targets (dotnet/aspnetcore #65890).
- Fixed
- HTTP / Kestrel
- Fixed HTTP/2 HEADERS frame padding length validation to account for PRIORITY flag bytes (dotnet/aspnetcore #65729).
- Fixed HTTP/2 Content-Length mismatch with trailers split across CONTINUATION frames (dotnet/aspnetcore #65765).
- Fixed HPACK/QPACK decoder to validate uncompressed header size limits per
MaxRequestHeaderFieldSizedocumentation (dotnet/aspnetcore #65771). - Fixed oversized TLS record length handling in
TlsListenerper RFC 8446 (dotnet/aspnetcore #65558). - Updated
ReasonPhrasevalidation for HTTP responses (dotnet/aspnetcore #65797).
- JSON Patch
- Fixed
JsonPatchDocumentoperations on properties within array elements (dotnet/aspnetcore #65470).
- Fixed
- Middleware
- Fixed output caching freshness check that incorrectly rejected cached entries when the request arrived on the same tick as the cache write (dotnet/aspnetcore #65659).
- Minimal APIs
- Fixed validation source generator crash when encountering types with indexers like
JsonElementandDictionary(dotnet/aspnetcore #65432).
- Fixed validation source generator crash when encountering types with indexers like
- SignalR
- Fixed cancellation handling with
StatefulReconnectto be more aggressive (dotnet/aspnetcore #65732).
- Fixed cancellation handling with
Thank you contributors! ❤️