Skip to content

Commit 2132180

Browse files
authored
Merge branch 'main' into guardrex/blazor-preview-5
2 parents 1bf014e + 52918b2 commit 2132180

File tree

11 files changed

+86
-32
lines changed

11 files changed

+86
-32
lines changed

aspnetcore/fundamentals/map-static-files.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,19 @@
22
title: Map static files in ASP.NET Core
33
author: rick-anderson
44
description: Learn how to serve and secure mapped static files and configure static file hosting middleware behaviors in an ASP.NET Core web app.
5-
monikerRange: '>= aspnetcore-8.0'
5+
monikerRange: '>= aspnetcore-9.0'
66
ms.author: riande
77
ms.custom: mvc
88
ms.date: 3/18/2025
99
uid: fundamentals/map-static-files
1010
---
1111
# Map static files in ASP.NET Core
1212

13-
:::moniker range=">= aspnetcore-9.0"
13+
<!-- UPDATE 10.0 - Activate at GA
14+
15+
[!INCLUDE[](~/includes/not-latest-version.md)]
16+
17+
-->
1418

1519
By [Rick Anderson](https://twitter.com/RickAndMSFT)
1620

@@ -209,5 +213,3 @@ The following code updates `IWebHostEnvironment.WebRootPath` to a non developmen
209213
* [Introduction to ASP.NET Core](xref:index)
210214
* <xref:blazor/file-uploads>
211215
* <xref:blazor/file-downloads>
212-
213-
:::moniker-end

aspnetcore/fundamentals/servers/kestrel/http3.md

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,14 @@ uid: fundamentals/servers/kestrel/http3
2727
* Is the latest version of the Hypertext Transfer Protocol.
2828
* Builds on the strengths of `HTTP/2` while addressing some of its limitations, particularly in terms of performance, latency, reliability, and security.
2929

30-
+---------------+-------------------------+-------------------------+
31-
| Feature | `HTTP/2` | `HTTP/3` |
32-
+---------------+-------------------------+-------------------------+
33-
| Transport | Uses [TCP](https://developer.mozilla.org/docs/Glossary/TCP) | Uses [QUIC](https://www.rfc-editor.org/rfc/rfc9000.html) |
34-
| Layer | | |
35-
| Connection | Slower due to TCP + TLS | Faster with 0-RTT QUIC |
36-
| Setup | handshake | handshakes |
37-
| Head-of-Line | Affected by TCP-level | Eliminated with QUIC |
38-
| Blocking | blocking | stream multiplexing |
39-
| Encryption | TLS over TCP | TLS is built into QUIC |
40-
+---------------+-------------------------+-------------------------+
41-
30+
| Feature | `HTTP/2` | `HTTP/3` |
31+
|--------------|-------------------------------------------------------------|----------------------------------------------------------|
32+
| Transport | Uses [TCP](https://developer.mozilla.org/docs/Glossary/TCP) | Uses [QUIC](https://www.rfc-editor.org/rfc/rfc9000.html) |
33+
| Connection | Slower due to TCP + TLS | Faster with 0-RTT QUIC |
34+
| Setup | handshake | handshakes |
35+
| Head-of-Line | Affected by TCP-level | Eliminated with QUIC |
36+
| Blocking | blocking | stream multiplexing |
37+
| Encryption | TLS over TCP | TLS is built into QUIC |
4238

4339
The key differences from `HTTP/2` to `HTTP/3` are:
4440

aspnetcore/fundamentals/servers/yarp/transforms-request.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -491,7 +491,7 @@ Disable default headers:
491491
transformBuilderContext.UseDefaultForwarders = false;
492492
```
493493

494-
When the proxy connects to the destination server, the connection is indepenent from the one the client made to the proxy. The destination server likely needs original connection information for security checks and to properly generate absolute URIs for links and redirects. To enable information about the client connection to be passed to the destination a set of extra headers can be added. Until the `Forwarded` standard was created, a common solution is to use `X-Forwarded-*` headers. There is no official standard that defines the `X-Forwarded-*` headers and implementations vary, check your destination server for support.
494+
When the proxy connects to the destination server, the connection is independent from the one the client made to the proxy. The destination server likely needs original connection information for security checks and to properly generate absolute URIs for links and redirects. To enable information about the client connection to be passed to the destination a set of extra headers can be added. Until the `Forwarded` standard was created, a common solution is to use `X-Forwarded-*` headers. There is no official standard that defines the `X-Forwarded-*` headers and implementations vary, check your destination server for support.
495495

496496
This transform is enabled by default even if not specified in the route config.
497497

@@ -599,4 +599,4 @@ As the inbound and outbound connections are independent, there needs to be a way
599599

600600
Servers do minimal validation on the incoming client certificate by default. The certificate should be validated either in the proxy or the destination, see the [client certificate auth](/aspnet/core/security/authentication/certauth) docs for details.
601601

602-
This transform will only apply if the client certificate is already present on the connection. See the [optional certs doc](/aspnet/core/security/authentication/certauth#optional-client-certificates) if it needs to be requested from the client on a per-route basis.
602+
This transform will only apply if the client certificate is already present on the connection. See the [optional certs doc](/aspnet/core/security/authentication/certauth#optional-client-certificates) if it needs to be requested from the client on a per-route basis.

aspnetcore/grpc/grpcweb/sample/8.x/GrpcGreeter/Program.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333

3434
app.UseGrpcWeb(new GrpcWebOptions { DefaultEnabled = true });
3535

36-
app.MapGrpcService<GreeterService>().EnableGrpcWeb();
36+
app.MapGrpcService<GreeterService>();
3737
app.MapGet("/", () => "All gRPC service are supported by default in this example, and are callable from browser apps using the gRPC-Web protocol");
3838

3939
app.Run();

aspnetcore/release-notes/aspnetcore-10.0.md

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
---
22
title: What's new in ASP.NET Core in .NET 10
3-
author: rick-anderson
3+
author: wadepickett
44
description: Learn about the new features in ASP.NET Core in .NET 10.
5-
ms.author: riande
5+
ms.author: wpickett
66
ms.custom: mvc
77
ms.date: 6/9/2025
88
uid: aspnetcore-10
@@ -13,8 +13,6 @@ This article highlights the most significant changes in ASP.NET Core in .NET 10
1313

1414
This article will be updated as new preview releases are made available. For breaking changes, see [Breaking changes in .NET](/dotnet/core/compatibility/breaking-changes).
1515

16-
<!-- New content should be added to ~/aspnetcore-9/includes/newFeatureName.md files. This will help prevent merge conflicts in this file. -->
17-
1816
## Blazor
1917

2018
This section describes new features for Blazor.
@@ -61,7 +59,7 @@ This section describes new features for OpenAPI.
6159

6260
[!INCLUDE[](~/release-notes/aspnetcore-10/includes/OpenApiSchemasInTransformers.md)]
6361

64-
[!INCLUDE[](~/release-notes/aspnetcore-10/includes/OpenApiNetUpdatePrev17.md)]
62+
[!INCLUDE[](~/release-notes/aspnetcore-10/includes/OpenApiNetUpdatePrev.md)]
6563

6664
### Authentication and authorization
6765

@@ -90,8 +88,9 @@ For more information, see [ASP.NET Core Authorization and Authentication metrics
9088

9189
This section describes miscellaneous new features in .NET 10.
9290

93-
[!INCLUDE[](~/release-notes/aspnetcore-10/includes/testAppsTopLevel.md)]
91+
[!INCLUDE[](~/release-notes/aspnetcore-10/includes/httpsys.md)]
9492

93+
[!INCLUDE[](~/release-notes/aspnetcore-10/includes/testAppsTopLevel.md)]
9594

9695
[!INCLUDE[](~/release-notes/aspnetcore-10/includes/jsonPatch.md)]
9796

@@ -116,3 +115,5 @@ if (RedirectHttpResult.IsLocalUrl(url))
116115
Thank you [@martincostello](https://github.com/martincostello) for this contribution!
117116

118117
## Related content
118+
119+
<xref:fundamentals/servers/httpsys>
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
### OpenAPI.NET updated to Preview.18
2+
3+
The OpenAPI.NET library used in ASP.NET Core OpenAPI document generation was upgraded to [v2.0.0-preview18](https://www.nuget.org/packages/Microsoft.OpenApi/2.0.0-preview.18). The v2.0.0-preview18 version improves compatibility with the updated library version.
4+
5+
The previous v2.0.0-preview17 version included a number of bug fixes and improvements and also introduced some breaking changes. The breaking changes should only affect users that use document, operation, or schema transformers. Breaking changes in this version that may affect developers include the following:
6+
7+
* [Ephemeral object properties are now in Metadata](https://github.com/microsoft/OpenAPI.NET/blob/main/docs/upgrade-guide-2.md#ephemeral-object-properties-are-now-in-metadata)
8+
* [Use HTTP Method Object Instead of Enum](https://github.com/microsoft/OpenAPI.NET/blob/main/docs/upgrade-guide-2.md#use-http-method-object-instead-of-enum)

aspnetcore/release-notes/aspnetcore-10/includes/OpenApiNetUpdatePrev17.md

Lines changed: 0 additions & 6 deletions
This file was deleted.

aspnetcore/release-notes/aspnetcore-10/includes/ValidationSupportMinAPI.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,6 @@ app.MapPost("/products",
3131
=> TypedResults.Ok(productId))
3232
.DisableValidation();
3333
```
34+
35+
> [!NOTE]
36+
> Several small improvements and fixes have been made to the Minimal APIs validation generator introduced in ASP.NET Core for .NET 10. To support future enhancements, the underlying validation resolver APIs are now marked as experimental. The top-level `AddValidation` APIs and the built-in validation filter remain stable and non-experimental.
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
### Customizable security descriptors for HTTP.sys
2+
<!--PR: https://github.com/dotnet/aspnetcore/pull/61325-->
3+
4+
You can now specify a custom security descriptor for HTTP.sys request queues. The new [RequestQueueSecurityDescriptor](https://source.dot.net/#Microsoft.AspNetCore.Server.HttpSys/HttpSysOptions.cs,a556950881fd2d87) property on <xref:Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions> enables more granular control over access rights for the request queue. This granular control lets you tailor security to your application's needs.
5+
6+
#### What you can do with the new property
7+
8+
A *request queue* in HTTP.sys is a kernel-level structure that temporarily stores incoming HTTP requests until your application is ready to process them. By customizing the security descriptor, you can allow or deny specific users or groups access to the request queue. This is useful in scenarios where you want to restrict or delegate HTTP.sys request handling at the operating system level.
9+
10+
#### How to use the new property
11+
12+
The `RequestQueueSecurityDescriptor` property applies only when creating a new request queue. The property doesn't affect existing request queues. To use this property, set it to a <xref:System.Security.AccessControl.GenericSecurityDescriptor> instance when configuring your HTTP.sys server.
13+
14+
For example, the following code allows all authenticated users but denies guests:
15+
[!code-csharp[](~/release-notes/aspnetcore-10/samples/HttpSysConfig/Program.cs)]
16+
17+
For more information, see <xref:fundamentals/servers/httpsys>.
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
using System.Security.AccessControl;
2+
using System.Security.Principal;
3+
using Microsoft.AspNetCore.Server.HttpSys;
4+
5+
// Create a new security descriptor
6+
var securityDescriptor = new CommonSecurityDescriptor(isContainer: false, isDS: false, sddlForm: string.Empty);
7+
8+
// Create a discretionary access control list (DACL)
9+
var dacl = new DiscretionaryAcl(isContainer: false, isDS: false, capacity: 2);
10+
dacl.AddAccess(
11+
AccessControlType.Allow,
12+
new SecurityIdentifier(WellKnownSidType.BuiltinUsersSid, null),
13+
-1,
14+
InheritanceFlags.None,
15+
PropagationFlags.None
16+
);
17+
dacl.AddAccess(
18+
AccessControlType.Deny,
19+
new SecurityIdentifier(WellKnownSidType.BuiltinGuestsSid, null),
20+
-1,
21+
InheritanceFlags.None,
22+
PropagationFlags.None
23+
);
24+
25+
// Assign the DACL to the security descriptor
26+
securityDescriptor.DiscretionaryAcl = dacl;
27+
28+
// Configure HTTP.sys options
29+
var builder = WebApplication.CreateBuilder();
30+
builder.WebHost.UseHttpSys(options =>
31+
{
32+
options.RequestQueueSecurityDescriptor = securityDescriptor;
33+
});

0 commit comments

Comments
 (0)