Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
6e0b35a
Initial plan for issue
Copilot Jun 5, 2025
8d18e4a
Add ASP.NET Core release notes for .NET 10 Preview 5
Copilot Jun 5, 2025
e99e60d
Add contributors list for .NET 10 Preview 5 ASP.NET Core release notes
Copilot Jun 5, 2025
89b9e81
Add am11 to contributors list for .NET 10 Preview 5 ASP.NET Core rele…
Copilot Jun 5, 2025
8f84a62
Fix heading casing to use sentence case throughout aspnetcore.md
Copilot Jun 5, 2025
9581d2e
Change validation section to "Validation resolver APIs marked as expe…
Copilot Jun 5, 2025
59cc45e
Change Blazor Router section title to "Specify a Not Found page using…
Copilot Jun 5, 2025
8cc068e
Update validation section per review feedback
Copilot Jun 5, 2025
f9efa6f
Update table of contents and section header to use "Add a Not Found p…
Copilot Jun 6, 2025
24bba06
Add Blazor metrics and tracing release notes for .NET 10 Preview 5
Copilot Jun 6, 2025
45497e2
Flatten Blazor metrics and tracing subheadings to H3 maximum
Copilot Jun 6, 2025
212a923
Update OpenTelemetry configuration description for Blazor metrics and…
Copilot Jun 6, 2025
aaf7b76
Remove README.md changes per review feedback
Copilot Jun 6, 2025
9d0ef88
Remove subheadings and connect with prose in HTTP.sys security descri…
Copilot Jun 6, 2025
7fb7daf
Update release-notes/10.0/preview/preview5/aspnetcore.md
danroth27 Jun 6, 2025
aeb9ab0
Update release-notes/10.0/preview/preview5/aspnetcore.md
danroth27 Jun 6, 2025
a95a8ec
Update release-notes/10.0/preview/preview5/aspnetcore.md
danroth27 Jun 6, 2025
9abd24c
fix Blazor metrics
pavelsavara Jun 6, 2025
5c5e0bb
Update release-notes/10.0/preview/preview5/aspnetcore.md
danroth27 Jun 6, 2025
917dc9c
Update release-notes/10.0/preview/preview5/aspnetcore.md
danroth27 Jun 6, 2025
4127577
Update release-notes/10.0/preview/preview5/aspnetcore.md
danroth27 Jun 6, 2025
4a7f5a5
Update release-notes/10.0/preview/preview5/aspnetcore.md
danroth27 Jun 6, 2025
f668a04
Update release-notes/10.0/preview/preview5/aspnetcore.md
danroth27 Jun 6, 2025
8a4313b
Update release-notes/10.0/preview/preview5/aspnetcore.md
danroth27 Jun 6, 2025
a1ed863
Update release-notes/10.0/preview/preview5/aspnetcore.md
danroth27 Jun 6, 2025
fba78b9
Update release-notes/10.0/preview/preview5/aspnetcore.md
danroth27 Jun 6, 2025
c9b56c1
Update release-notes/10.0/preview/preview5/aspnetcore.md
danroth27 Jun 6, 2025
0e3c232
Update release-notes/10.0/preview/preview5/aspnetcore.md
danroth27 Jun 6, 2025
b09809f
Update release-notes/10.0/preview/preview5/aspnetcore.md
danroth27 Jun 7, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions release-notes/10.0/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ It is currently in development and not supported. .NET 10 is expected to be rele
### ASP.NET Core

- [What's new in ASP.NET Core 10.0](https://learn.microsoft.com/aspnet/core/release-notes/aspnetcore-10.0)
- [Preview 5](preview/preview5/aspnetcore.md)
- [Preview 4](preview/preview4/aspnetcore.md)
- [Preview 3](preview/preview3/aspnetcore.md)
- [Preview 2](preview/preview2/aspnetcore.md)
Expand Down
107 changes: 107 additions & 0 deletions release-notes/10.0/preview/preview5/aspnetcore.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
# ASP.NET Core in .NET 10 Preview 5 - Release Notes

Here's a summary of what's new in ASP.NET Core in this preview release:

- [Configure custom security descriptors for HTTP.sys request queues](#configure-custom-security-descriptors-for-httpsys-request-queues)
- [Validation resolver APIs marked as experimental](#validation-resolver-apis-marked-as-experimental)
- [Support for generating OpenAPI 3.1](#support-for-generating-openapi-31)
- [OpenAPI metadata from XML doc comments](#openapi-metadata-from-xml-doc-comments)
- [Router has a `NotFoundPage` parameter](#router-has-a-notfoundpage-parameter)

ASP.NET Core updates in .NET 10:

- [What's new in ASP.NET Core in .NET 10](https://learn.microsoft.com/aspnet/core/release-notes/aspnetcore-10.0) documentation.
- [Breaking changes](https://docs.microsoft.com/dotnet/core/compatibility/10.0#aspnet-core)
- [Roadmap](https://github.com/dotnet/aspnetcore/issues/59443)

## Configure custom security descriptors for HTTP.sys request queues

You can now specify a custom security descriptor for HTTP.sys request queues using the new `RequestQueueSecurityDescriptor` property on `HttpSysOptions`. This feature enables more granular control over access rights for the request queue, helping you tailor security to your application's needs.

### Why this matters

By customizing the security descriptor, you can allow or deny specific users or groups access to the request queue. This is particularly useful in scenarios where you want to restrict or delegate HTTP.sys request handling at the operating system level.

### How to use

Set the `RequestQueueSecurityDescriptor` property to a `GenericSecurityDescriptor` instance when configuring your HTTP.sys server. For example, to allow all users but deny guests:

```csharp
using System.Security.AccessControl;
using System.Security.Principal;
using Microsoft.AspNetCore.Server.HttpSys;

// Create a new security descriptor
var securityDescriptor = new CommonSecurityDescriptor(isContainer: false, isDS: false, sddlForm: string.Empty);

// Create a discretionary access control list (DACL)
var dacl = new DiscretionaryAcl(isContainer: false, isDS: false, capacity: 2);
dacl.AddAccess(
AccessControlType.Allow,
new SecurityIdentifier(WellKnownSidType.BuiltinUsersSid, null),
-1,
InheritanceFlags.None,
PropagationFlags.None
);
dacl.AddAccess(
AccessControlType.Deny,
new SecurityIdentifier(WellKnownSidType.BuiltinGuestsSid, null),
-1,
InheritanceFlags.None,
PropagationFlags.None
);

// Assign the DACL to the security descriptor
securityDescriptor.DiscretionaryAcl = dacl;

// Configure HTTP.sys options
var builder = WebApplication.CreateBuilder();
builder.WebHost.UseHttpSys(options =>
{
options.RequestQueueSecurityDescriptor = securityDescriptor;
});
```

### Additional notes

- The `RequestQueueSecurityDescriptor` applies only when creating a new request queue.
- This property does not affect existing request queues.
- See the official documentation for more information about Windows security descriptors and their usage.

## Validation resolver APIs marked as experimental

A number of small improvements and fixes have been made to the validation generator for Minimal APIs that was introduced in preview 4.

To support future work in the space, the underlying validation resolver APIs used to support minimal API validation have been marked as experimental. However, the top-level `AddValidation` APIs and the built-in validation filter are non-experimental.

## Support for generating OpenAPI 3.1

The OpenAPI.NET library used in ASP.NET Core OpenAPI document generation has been upgraded to [v2.0.0-preview18](https://github.com/microsoft/OpenAPI.NET/releases/tag/v2.0.0-preview.18).

## OpenAPI metadata from XML doc comments

Support for generating OpenAPI metadata from XML doc comments has been extended to extract metadata for operation responses from `<returns>` and `<response>` XML tags.

## Router has a `NotFoundPage` parameter

Rendering content after triggering `NavigationManager.NotFound()` method can be now handled by passing a parameter with page type to the `Router`. It is a preferred way over `NotFound` fragment because it supports routing that can be used across different applications code re-execution middleware, including non-blazor ones. If `NotFound` fragment is defined together with `NotFoundPage`, the page has higher priority.

```html
<Router AppAssembly="@typeof(Program).Assembly" NotFoundPage="typeof(Pages.NotFound)">
<Found Context="routeData">
<RouteView RouteData="@routeData" />
<FocusOnNavigate RouteData="@routeData" Selector="h1" />
</Found>
<NotFound>This content will be ignored because we have NotFoundPage defined.</NotFound>
</Router>
```

## Contributors

Thank you contributors! ❤️

- [@am11](https://github.com/dotnet/aspnetcore/pulls?q=is%3Apr+is%3Amerged+milestone%3A10.0-preview5+author%3Aam11)
- [@Dona278](https://github.com/dotnet/aspnetcore/pulls?q=is%3Apr+is%3Amerged+milestone%3A10.0-preview5+author%3ADona278)
- [@feiyun0112](https://github.com/dotnet/aspnetcore/pulls?q=is%3Apr+is%3Amerged+milestone%3A10.0-preview5+author%3Afeiyun0112)
- [@MohabASHRAF-byte](https://github.com/dotnet/aspnetcore/pulls?q=is%3Apr+is%3Amerged+milestone%3A10.0-preview5+author%3AMohabASHRAF-byte)
- [@profet23](https://github.com/dotnet/aspnetcore/pulls?q=is%3Apr+is%3Amerged+milestone%3A10.0-preview5+author%3Apropet23)