From 83af984daff0cf0dbbf055e64d75c2d1ce83459a Mon Sep 17 00:00:00 2001 From: wadepickett Date: Tue, 8 Jul 2025 21:21:10 -0700 Subject: [PATCH 01/13] Ms.date sync with last signficant commit --- aspnetcore/client-side/bundling-and-minification.md | 2 +- aspnetcore/client-side/spa/angular.md | 2 +- aspnetcore/data/ef-mvc/concurrency.md | 2 +- aspnetcore/data/ef-mvc/intro.md | 2 +- aspnetcore/data/ef-rp/complex-data-model.md | 2 +- aspnetcore/data/ef-rp/concurrency.md | 2 +- aspnetcore/data/ef-rp/intro.md | 2 +- aspnetcore/data/scaffold_RP.md | 2 +- aspnetcore/diagnostics/asp0000.md | 2 +- aspnetcore/diagnostics/asp0001.md | 2 +- aspnetcore/diagnostics/asp0003.md | 2 +- aspnetcore/diagnostics/asp0004.md | 2 +- aspnetcore/diagnostics/asp0005.md | 2 +- aspnetcore/diagnostics/asp0006.md | 2 +- aspnetcore/diagnostics/asp0007.md | 2 +- aspnetcore/diagnostics/asp0008.md | 2 +- aspnetcore/diagnostics/asp0009.md | 2 +- aspnetcore/diagnostics/asp0010.md | 2 +- aspnetcore/diagnostics/asp0011.md | 2 +- aspnetcore/diagnostics/asp0012.md | 2 +- aspnetcore/diagnostics/asp0013.md | 2 +- aspnetcore/diagnostics/asp0014.md | 2 +- aspnetcore/diagnostics/asp0015.md | 2 +- aspnetcore/diagnostics/asp0016.md | 2 +- aspnetcore/diagnostics/asp0017.md | 2 +- aspnetcore/diagnostics/asp0018.md | 2 +- aspnetcore/diagnostics/asp0019.md | 2 +- aspnetcore/diagnostics/asp0020.md | 2 +- aspnetcore/diagnostics/asp0021.md | 2 +- aspnetcore/diagnostics/asp0022.md | 2 +- aspnetcore/diagnostics/asp0023.md | 2 +- aspnetcore/diagnostics/asp0024.md | 2 +- aspnetcore/diagnostics/asp0025.md | 2 +- aspnetcore/diagnostics/asp0026.md | 2 +- aspnetcore/diagnostics/mvc1001.md | 2 +- aspnetcore/diagnostics/mvc1002.md | 2 +- aspnetcore/diagnostics/mvc1003.md | 2 +- aspnetcore/diagnostics/mvc1004.md | 2 +- aspnetcore/diagnostics/mvc1005.md | 2 +- aspnetcore/diagnostics/mvc1006.md | 2 +- aspnetcore/fundamentals/aot/native-aot-tutorial.md | 2 +- .../aot/request-delegate-generator/diagnostics/rdg001.md | 2 +- .../aot/request-delegate-generator/diagnostics/rdg002.md | 2 +- .../aot/request-delegate-generator/diagnostics/rdg003.md | 2 +- .../aot/request-delegate-generator/diagnostics/rdg004.md | 2 +- .../aot/request-delegate-generator/diagnostics/rdg005.md | 2 +- .../aot/request-delegate-generator/diagnostics/rdg006.md | 2 +- .../aot/request-delegate-generator/diagnostics/rdg007.md | 2 +- .../aot/request-delegate-generator/diagnostics/rdg008.md | 2 +- .../aot/request-delegate-generator/diagnostics/rdg009.md | 2 +- .../aot/request-delegate-generator/diagnostics/rdg010.md | 2 +- .../aot/request-delegate-generator/diagnostics/rdg011.md | 2 +- .../aot/request-delegate-generator/diagnostics/rdg012.md | 2 +- .../aot/request-delegate-generator/diagnostics/rdg013.md | 2 +- aspnetcore/fundamentals/aot/request-delegate-generator/rdg.md | 2 +- aspnetcore/fundamentals/app-state.md | 2 +- aspnetcore/fundamentals/choose-aspnet-framework.md | 2 +- aspnetcore/fundamentals/configuration/index.md | 2 +- aspnetcore/fundamentals/configuration/options.md | 2 +- .../dependency-injection/includes/dependency-injection-5-7.md | 2 +- aspnetcore/fundamentals/dotnet-scaffold-telemetry.md | 2 +- aspnetcore/fundamentals/environments.md | 2 +- aspnetcore/fundamentals/error-handling.md | 2 +- aspnetcore/fundamentals/host/hosted-services.md | 2 +- aspnetcore/fundamentals/host/web-host.md | 2 +- aspnetcore/fundamentals/http-context.md | 2 +- aspnetcore/fundamentals/http-logging/includes/index-6-7.md | 2 +- aspnetcore/fundamentals/http-logging/index.md | 2 +- aspnetcore/fundamentals/localization.md | 2 +- .../fundamentals/localization/make-content-localizable.md | 2 +- aspnetcore/fundamentals/localization/provide-resources.md | 2 +- aspnetcore/fundamentals/localization/select-language-culture.md | 2 +- aspnetcore/fundamentals/logging/index.md | 2 +- aspnetcore/fundamentals/map-static-files.md | 2 +- aspnetcore/fundamentals/middleware/index.md | 2 +- aspnetcore/fundamentals/middleware/request-response.md | 2 +- aspnetcore/fundamentals/middleware/write.md | 2 +- aspnetcore/fundamentals/minimal-apis.md | 2 +- aspnetcore/fundamentals/minimal-apis/includes/responses7-8.md | 2 +- aspnetcore/fundamentals/minimal-apis/parameter-binding.md | 2 +- aspnetcore/fundamentals/minimal-apis/responses.md | 2 +- aspnetcore/fundamentals/minimal-apis/webapplication.md | 2 +- aspnetcore/fundamentals/native-aot.md | 2 +- aspnetcore/fundamentals/openapi/aspnetcore-openapi.md | 2 +- aspnetcore/fundamentals/openapi/customize-openapi.md | 2 +- aspnetcore/fundamentals/openapi/include-metadata.md | 2 +- aspnetcore/fundamentals/openapi/openapi-comments.md | 2 +- aspnetcore/fundamentals/openapi/openapi-tools.md | 2 +- aspnetcore/fundamentals/openapi/overview.md | 2 +- aspnetcore/fundamentals/openapi/using-openapi-documents.md | 2 +- aspnetcore/fundamentals/owin.md | 2 +- aspnetcore/fundamentals/portable-object-localization.md | 2 +- aspnetcore/fundamentals/routing.md | 2 +- aspnetcore/fundamentals/servers/httpsys.md | 2 +- aspnetcore/fundamentals/servers/index.md | 2 +- aspnetcore/fundamentals/servers/kestrel/endpoints.md | 2 +- aspnetcore/fundamentals/servers/kestrel/http3.md | 2 +- .../fundamentals/servers/kestrel/when-to-use-a-reverse-proxy.md | 2 +- aspnetcore/fundamentals/servers/yarp/dests-health-checks.md | 2 +- aspnetcore/fundamentals/servers/yarp/distributed-tracing.md | 2 +- aspnetcore/fundamentals/servers/yarp/extensibility.md | 2 +- aspnetcore/fundamentals/servers/yarp/grpc.md | 2 +- aspnetcore/fundamentals/servers/yarp/header-guidelines.md | 2 +- aspnetcore/fundamentals/servers/yarp/https-tls.md | 2 +- aspnetcore/fundamentals/servers/yarp/httpsys-delegation.md | 2 +- aspnetcore/fundamentals/servers/yarp/kubernetes-ingress.md | 2 +- aspnetcore/fundamentals/servers/yarp/lets-encrypt.md | 2 +- aspnetcore/fundamentals/servers/yarp/middleware.md | 2 +- aspnetcore/fundamentals/servers/yarp/service-fabric-int.md | 2 +- aspnetcore/fundamentals/servers/yarp/transforms-response.md | 2 +- aspnetcore/fundamentals/servers/yarp/yarp-overview.md | 2 +- aspnetcore/fundamentals/static-files.md | 2 +- aspnetcore/fundamentals/tools/dotnet-aspnet-codegenerator.md | 2 +- .../fundamentals/troubleshoot-aspnet-core-localization.md | 2 +- aspnetcore/fundamentals/use-http-context.md | 2 +- aspnetcore/fundamentals/websockets.md | 2 +- aspnetcore/introduction-to-aspnet-core.md | 2 +- 117 files changed, 117 insertions(+), 117 deletions(-) diff --git a/aspnetcore/client-side/bundling-and-minification.md b/aspnetcore/client-side/bundling-and-minification.md index 8f157d11e97e..729b32c15f39 100644 --- a/aspnetcore/client-side/bundling-and-minification.md +++ b/aspnetcore/client-side/bundling-and-minification.md @@ -4,7 +4,7 @@ author: wadepickett description: Learn how to optimize static resources in an ASP.NET Core web application by applying bundling and minification techniques. ms.author: wpickett ms.custom: mvc -ms.date: 05/08/2025 +ms.date: 05/09/2025 uid: client-side/bundling-and-minification --- # Bundle and minify static assets in ASP.NET Core diff --git a/aspnetcore/client-side/spa/angular.md b/aspnetcore/client-side/spa/angular.md index ecdff7394d27..1dcf49cac5b1 100644 --- a/aspnetcore/client-side/spa/angular.md +++ b/aspnetcore/client-side/spa/angular.md @@ -5,7 +5,7 @@ description: Learn how to get started with the ASP.NET Core Single Page Applicat monikerRange: '>= aspnetcore-3.1' ms.author: stevesa ms.custom: mvc -ms.date: 09/12/2023 +ms.date: 09/29/2023 uid: spa/angular --- # Use the Angular project template with ASP.NET Core diff --git a/aspnetcore/data/ef-mvc/concurrency.md b/aspnetcore/data/ef-mvc/concurrency.md index 53ecbd7cc9b9..69996e8a1ec2 100644 --- a/aspnetcore/data/ef-mvc/concurrency.md +++ b/aspnetcore/data/ef-mvc/concurrency.md @@ -4,7 +4,7 @@ description: "This tutorial shows how to handle conflicts when multiple users up author: tdykstra ms.author: tdykstra ms.custom: mvc -ms.date: 03/27/2019 +ms.date: 07/09/2024 ms.topic: tutorial uid: data/ef-mvc/concurrency --- diff --git a/aspnetcore/data/ef-mvc/intro.md b/aspnetcore/data/ef-mvc/intro.md index badfd6aeff89..4b69b85ea3da 100644 --- a/aspnetcore/data/ef-mvc/intro.md +++ b/aspnetcore/data/ef-mvc/intro.md @@ -4,7 +4,7 @@ description: "This page is the first in a series of tutorials that explain how t author: tdykstra ms.author: tdykstra ms.custom: mvc -ms.date: 11/06/2020 +ms.date: 05/28/2025 ms.topic: tutorial uid: data/ef-mvc/intro --- diff --git a/aspnetcore/data/ef-rp/complex-data-model.md b/aspnetcore/data/ef-rp/complex-data-model.md index 107aed3b852e..081dcb7dcf8c 100644 --- a/aspnetcore/data/ef-rp/complex-data-model.md +++ b/aspnetcore/data/ef-rp/complex-data-model.md @@ -4,7 +4,7 @@ author: tdykstra description: Part 5 of Razor Pages and Entity Framework tutorial series. ms.author: tdykstra ms.custom: mvc -ms.date: 3/3/2021 +ms.date: 04/10/2025 uid: data/ef-rp/complex-data-model --- diff --git a/aspnetcore/data/ef-rp/concurrency.md b/aspnetcore/data/ef-rp/concurrency.md index 0becc104bdd5..8254fb4382c5 100644 --- a/aspnetcore/data/ef-rp/concurrency.md +++ b/aspnetcore/data/ef-rp/concurrency.md @@ -4,7 +4,7 @@ author: tdykstra description: Part 8 of Razor Pages and Entity Framework tutorial series. ms.author: tdykstra ms.custom: mvc -ms.date: 07/22/2019 +ms.date: 01/29/2025 uid: data/ef-rp/concurrency --- # Part 8, Razor Pages with EF Core in ASP.NET Core - Concurrency diff --git a/aspnetcore/data/ef-rp/intro.md b/aspnetcore/data/ef-rp/intro.md index 21191d78f486..3b1f3a328b1d 100644 --- a/aspnetcore/data/ef-rp/intro.md +++ b/aspnetcore/data/ef-rp/intro.md @@ -5,7 +5,7 @@ description: Shows how to create a Razor Pages app using Entity Framework Core ms.author: tdykstra monikerRange: '>= aspnetcore-3.1' ms.custom: "mvc" -ms.date: 11/11/2021 +ms.date: 04/23/2025 uid: data/ef-rp/intro --- diff --git a/aspnetcore/data/scaffold_RP.md b/aspnetcore/data/scaffold_RP.md index f8166b2c2ad8..7a4c40cbd41b 100644 --- a/aspnetcore/data/scaffold_RP.md +++ b/aspnetcore/data/scaffold_RP.md @@ -4,7 +4,7 @@ description: Scaffold a data model with dotnet scaffold in a Razor Pages project author: rick-anderson ms.author: riande monikerRange: '>= aspnetcore-9.0' -ms.date: 3/15/2025 +ms.date: 04/24/2025 ms.topic: article content_well_notification: AI-contribution ai-usage: ai-assisted diff --git a/aspnetcore/diagnostics/asp0000.md b/aspnetcore/diagnostics/asp0000.md index 4d3a1bca141c..b83506c44e1e 100644 --- a/aspnetcore/diagnostics/asp0000.md +++ b/aspnetcore/diagnostics/asp0000.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule ASP0000: Do not call 'IServiceCollection author: pranavkm monikerRange: '>= aspnetcore-5.0' ms.author: wpickett -ms.date: 10/21/2021 +ms.date: 03/27/2025 uid: diagnostics/asp0000 --- # ASP0000: Do not call 'IServiceCollection.BuildServiceProvider' in 'ConfigureServices' diff --git a/aspnetcore/diagnostics/asp0001.md b/aspnetcore/diagnostics/asp0001.md index ffbf6ef5d03c..559b80125f5c 100644 --- a/aspnetcore/diagnostics/asp0001.md +++ b/aspnetcore/diagnostics/asp0001.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule ASP0001: Authorization middleware is inc author: pranavkm monikerRange: '>= aspnetcore-5.0' ms.author: wpickett -ms.date: 10/21/2021 +ms.date: 03/27/2025 uid: diagnostics/asp0001 --- # ASP0001: Authorization middleware is incorrectly configured diff --git a/aspnetcore/diagnostics/asp0003.md b/aspnetcore/diagnostics/asp0003.md index 392b6da6c5d9..0b36cdda5478 100644 --- a/aspnetcore/diagnostics/asp0003.md +++ b/aspnetcore/diagnostics/asp0003.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule ASP0003: Do not use action results with author: safia monikerRange: '>= aspnetcore-6.0' ms.author: riande -ms.date: 10/21/2021 +ms.date: 03/27/2025 uid: diagnostics/asp0003 --- # ASP0003: Do not use model binding attributes with route handlers diff --git a/aspnetcore/diagnostics/asp0004.md b/aspnetcore/diagnostics/asp0004.md index 84fbc988393b..f12d966111b9 100644 --- a/aspnetcore/diagnostics/asp0004.md +++ b/aspnetcore/diagnostics/asp0004.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule ASP0004: Do not use action results with author: safia monikerRange: '>= aspnetcore-6.0' ms.author: riande -ms.date: 10/21/2021 +ms.date: 03/27/2025 uid: diagnostics/asp0004 --- # ASP0004: Do not use action results with route handlers diff --git a/aspnetcore/diagnostics/asp0005.md b/aspnetcore/diagnostics/asp0005.md index 839d54a8f03e..f872986c56f7 100644 --- a/aspnetcore/diagnostics/asp0005.md +++ b/aspnetcore/diagnostics/asp0005.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule ASP0005: Do not place attribute on metho author: safia monikerRange: '>= aspnetcore-6.0' ms.author: riande -ms.date: 10/21/2021 +ms.date: 03/27/2025 uid: diagnostics/asp0005 --- # ASP0005: Do not place attribute on method called by route handler lambda diff --git a/aspnetcore/diagnostics/asp0006.md b/aspnetcore/diagnostics/asp0006.md index 82d98f9fdc7a..d5958ab51f38 100644 --- a/aspnetcore/diagnostics/asp0006.md +++ b/aspnetcore/diagnostics/asp0006.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule ASP0006: Do not use non-literal sequence author: safia monikerRange: '>= aspnetcore-6.0' ms.author: riande -ms.date: 10/21/2021 +ms.date: 03/27/2025 uid: diagnostics/asp0006 --- # ASP0006: Do not use non-literal sequence numbers diff --git a/aspnetcore/diagnostics/asp0007.md b/aspnetcore/diagnostics/asp0007.md index 942b2069b611..919653039f58 100644 --- a/aspnetcore/diagnostics/asp0007.md +++ b/aspnetcore/diagnostics/asp0007.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule ASP0007: Route parameter and argument op author: safia monikerRange: '>= aspnetcore-6.0' ms.author: riande -ms.date: 10/21/2021 +ms.date: 03/27/2025 uid: diagnostics/asp0007 --- # ASP0007: Route parameter and argument optionality is mismatched diff --git a/aspnetcore/diagnostics/asp0008.md b/aspnetcore/diagnostics/asp0008.md index cd52f9f86782..ebf597c4c006 100644 --- a/aspnetcore/diagnostics/asp0008.md +++ b/aspnetcore/diagnostics/asp0008.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule ASP0008: Do not use ConfigureWebHost wit author: safia monikerRange: '>= aspnetcore-7.0' ms.author: safia -ms.date: 09/23/2022 +ms.date: 03/27/2025 uid: diagnostics/asp0008 --- # ASP0008: Do not use ConfigureWebHost with WebApplicationBuilder.Host diff --git a/aspnetcore/diagnostics/asp0009.md b/aspnetcore/diagnostics/asp0009.md index 79066eee7b5d..f8badc22cc21 100644 --- a/aspnetcore/diagnostics/asp0009.md +++ b/aspnetcore/diagnostics/asp0009.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule ASP0009: Do not use Configure with WebAp author: safia monikerRange: '>= aspnetcore-7.0' ms.author: safia -ms.date: 09/23/2022 +ms.date: 03/27/2025 uid: diagnostics/asp0009 --- # ASP0009: Do not use Configure with WebApplicationBuilder.WebHost diff --git a/aspnetcore/diagnostics/asp0010.md b/aspnetcore/diagnostics/asp0010.md index 3f0de30adc1b..be34326ac283 100644 --- a/aspnetcore/diagnostics/asp0010.md +++ b/aspnetcore/diagnostics/asp0010.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule ASP0010: Do not use UseStartup with WebA author: safia monikerRange: '>= aspnetcore-7.0' ms.author: wpickett -ms.date: 09/23/2022 +ms.date: 03/27/2025 uid: diagnostics/asp0010 --- # ASP0010: Do not use UseStartup with WebApplicationBuilder.WebHost diff --git a/aspnetcore/diagnostics/asp0011.md b/aspnetcore/diagnostics/asp0011.md index 96852cee4093..f26a06d28776 100644 --- a/aspnetcore/diagnostics/asp0011.md +++ b/aspnetcore/diagnostics/asp0011.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule ASP0011: Suggest using builder.Logging o author: safia monikerRange: '>= aspnetcore-7.0' ms.author: safia -ms.date: 09/27/2022 +ms.date: 03/27/2025 uid: diagnostics/asp0011 --- # ASP0011: Suggest using builder.Logging over Host.ConfigureLogging or WebHost.ConfigureLogging diff --git a/aspnetcore/diagnostics/asp0012.md b/aspnetcore/diagnostics/asp0012.md index 52f5427fbcb7..c8922c40e6cf 100644 --- a/aspnetcore/diagnostics/asp0012.md +++ b/aspnetcore/diagnostics/asp0012.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule ASP0012: Suggest using builder.Services author: safia monikerRange: '>= aspnetcore-7.0' ms.author: safia -ms.date: 09/27/2022 +ms.date: 03/27/2025 uid: diagnostics/asp0012 --- # ASP0012: Suggest using builder.Services over Host.ConfigureServices or WebHost.ConfigureServices diff --git a/aspnetcore/diagnostics/asp0013.md b/aspnetcore/diagnostics/asp0013.md index 5ac3afd94650..d8df9a45010e 100644 --- a/aspnetcore/diagnostics/asp0013.md +++ b/aspnetcore/diagnostics/asp0013.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule ASP0013: Suggest switching from using Co author: rick-anderson monikerRange: '>= aspnetcore-7.0' ms.author: riande -ms.date: 09/27/2022 +ms.date: 03/27/2025 uid: diagnostics/asp0013 --- # ASP0013: Suggest switching from using Configure methods to WebApplicationBuilder.Configuration diff --git a/aspnetcore/diagnostics/asp0014.md b/aspnetcore/diagnostics/asp0014.md index b736884316b0..298dee8c0436 100644 --- a/aspnetcore/diagnostics/asp0014.md +++ b/aspnetcore/diagnostics/asp0014.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule ASP0014: Suggest using top level route r author: captainsafia monikerRange: '>= aspnetcore-7.0' ms.author: safia -ms.date: 09/27/2022 +ms.date: 03/27/2025 uid: diagnostics/asp0014 --- # ASP0014: Suggest using top level route registrations diff --git a/aspnetcore/diagnostics/asp0015.md b/aspnetcore/diagnostics/asp0015.md index a18a0e464482..0ef40f853297 100644 --- a/aspnetcore/diagnostics/asp0015.md +++ b/aspnetcore/diagnostics/asp0015.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule ASP0015: Suggest using IHeaderDictionary author: tdykstra monikerRange: '>= aspnetcore-8.0' ms.author: tdykstra -ms.date: 11/23/2022 +ms.date: 03/27/2025 uid: diagnostics/asp0015 --- # ASP0015: Suggest using IHeaderDictionary properties diff --git a/aspnetcore/diagnostics/asp0016.md b/aspnetcore/diagnostics/asp0016.md index cbff4d95761c..429cfcfa00fa 100644 --- a/aspnetcore/diagnostics/asp0016.md +++ b/aspnetcore/diagnostics/asp0016.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule ASP0016: Do not return a value from Requ author: tdykstra monikerRange: '>= aspnetcore-8.0' ms.author: tdykstra -ms.date: 11/22/2022 +ms.date: 03/27/2025 uid: diagnostics/asp0016 --- # ASP0016: Do not return a value from RequestDelegate diff --git a/aspnetcore/diagnostics/asp0017.md b/aspnetcore/diagnostics/asp0017.md index f01483419df0..ff14b89f0b13 100644 --- a/aspnetcore/diagnostics/asp0017.md +++ b/aspnetcore/diagnostics/asp0017.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule ASP0017: Invalid route pattern" author: tdykstra monikerRange: '>= aspnetcore-8.0' ms.author: tdykstra -ms.date: 11/22/2022 +ms.date: 03/27/2025 uid: diagnostics/asp0017 --- # ASP0017: Invalid route pattern diff --git a/aspnetcore/diagnostics/asp0018.md b/aspnetcore/diagnostics/asp0018.md index 5ed8c708b5c3..48755b965bf3 100644 --- a/aspnetcore/diagnostics/asp0018.md +++ b/aspnetcore/diagnostics/asp0018.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule ASP0018: Unused route parameter" author: tdykstra monikerRange: '>= aspnetcore-8.0' ms.author: tdykstra -ms.date: 4/1/2024 +ms.date: 03/27/2025 uid: diagnostics/asp0018 --- # ASP0018: Unused route parameter diff --git a/aspnetcore/diagnostics/asp0019.md b/aspnetcore/diagnostics/asp0019.md index 8e9011d26f55..d2c9416d6c50 100644 --- a/aspnetcore/diagnostics/asp0019.md +++ b/aspnetcore/diagnostics/asp0019.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule ASP0019: Suggest using IHeaderDictionary author: tdykstra monikerRange: '>= aspnetcore-8.0' ms.author: tdykstra -ms.date: 11/22/2022 +ms.date: 03/27/2025 uid: diagnostics/asp0019 --- # ASP0019: Suggest using IHeaderDictionary.Append or the indexer diff --git a/aspnetcore/diagnostics/asp0020.md b/aspnetcore/diagnostics/asp0020.md index 913dab5ebb0e..52ce70094c3e 100644 --- a/aspnetcore/diagnostics/asp0020.md +++ b/aspnetcore/diagnostics/asp0020.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule ASP0020: Complex types referenced by rou author: tdykstra monikerRange: '>= aspnetcore-8.0' ms.author: tdykstra -ms.date: 03/24/2023 +ms.date: 03/27/2025 uid: diagnostics/asp0020 --- # ASP0020: Complex types referenced by route parameters must be parsable diff --git a/aspnetcore/diagnostics/asp0021.md b/aspnetcore/diagnostics/asp0021.md index 0aba1d9ced8f..ddc1a0470f3a 100644 --- a/aspnetcore/diagnostics/asp0021.md +++ b/aspnetcore/diagnostics/asp0021.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule ASP0021: When implementing the BindAsync author: tdykstra monikerRange: '>= aspnetcore-8.0' ms.author: tdykstra -ms.date: 03/27/2023 +ms.date: 03/27/2025 uid: diagnostics/asp0021 --- # ASP0021: The return type of the BindAsync method must be `ValueTask`. diff --git a/aspnetcore/diagnostics/asp0022.md b/aspnetcore/diagnostics/asp0022.md index 88c1d1a83db2..77237584544c 100644 --- a/aspnetcore/diagnostics/asp0022.md +++ b/aspnetcore/diagnostics/asp0022.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule ASP0022: Route conflict detected between author: tdykstra monikerRange: '>= aspnetcore-8.0' ms.author: tdykstra -ms.date: 11/08/2023 +ms.date: 03/27/2025 uid: diagnostics/asp0022 --- # ASP0022: Route conflict detected between route handlers diff --git a/aspnetcore/diagnostics/asp0023.md b/aspnetcore/diagnostics/asp0023.md index 2c3753b85364..f8fb74283afc 100644 --- a/aspnetcore/diagnostics/asp0023.md +++ b/aspnetcore/diagnostics/asp0023.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule ASP0023: Route conflict detected between author: tdykstra monikerRange: '>= aspnetcore-8.0' ms.author: tdykstra -ms.date: 3/24/2023 +ms.date: 03/27/2025 uid: diagnostics/asp0023 --- # ASP0023: Route conflict detected between route handlers diff --git a/aspnetcore/diagnostics/asp0024.md b/aspnetcore/diagnostics/asp0024.md index 5b1d570150c2..148325e5977f 100644 --- a/aspnetcore/diagnostics/asp0024.md +++ b/aspnetcore/diagnostics/asp0024.md @@ -1,6 +1,6 @@ --- title: "ASP0024: A route handler has multiple parameters with the [FromBody] attribute" -ms.date: 03/28/2023 +ms.date: 03/27/2025 description: "Learn about analysis rule ASP0024: A route handler has multiple parameters with the [FromBody] attribute" author: tdykstra monikerRange: '>= aspnetcore-8.0' diff --git a/aspnetcore/diagnostics/asp0025.md b/aspnetcore/diagnostics/asp0025.md index 97dd7138743c..b69e33965015 100644 --- a/aspnetcore/diagnostics/asp0025.md +++ b/aspnetcore/diagnostics/asp0025.md @@ -1,6 +1,6 @@ --- title: "ASP0025: Use AddAuthorizationBuilder to register authorization services and construct policies." -ms.date: 05/11/2023 +ms.date: 04/30/2025 description: "Learn about analysis rule ASP0025: Use AddAuthorizationBuilder to register authorization services and construct policies." author: tdykstra monikerRange: '>= aspnetcore-8.0' diff --git a/aspnetcore/diagnostics/asp0026.md b/aspnetcore/diagnostics/asp0026.md index 786d2daa5cf0..bf7e7c51ed18 100644 --- a/aspnetcore/diagnostics/asp0026.md +++ b/aspnetcore/diagnostics/asp0026.md @@ -1,6 +1,6 @@ --- title: "ASP0026: Analyzer to warn when [Authorize] is overridden by [AllowAnonymous] from 'farther away'" -ms.date: 07/08/2024 +ms.date: 03/27/2025 description: "Learn about analysis rule ASP0026: [Authorize] is overridden by [AllowAnonymous] from 'farther away'" author: tdykstra monikerRange: '>= aspnetcore-9.0' diff --git a/aspnetcore/diagnostics/mvc1001.md b/aspnetcore/diagnostics/mvc1001.md index 1ea25e1e7344..55467daa88fc 100644 --- a/aspnetcore/diagnostics/mvc1001.md +++ b/aspnetcore/diagnostics/mvc1001.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule MVC1001: Filters cannot be applied to pa author: pranavkm monikerRange: '>= aspnetcore-3.1' ms.author: wpickett -ms.date: 10/21/2021 +ms.date: 03/27/2025 uid: diagnostics/mvc1001 --- # MVC1001: Filters cannot be applied to page handler methods diff --git a/aspnetcore/diagnostics/mvc1002.md b/aspnetcore/diagnostics/mvc1002.md index ce307024dbcf..f43e1bdb1e45 100644 --- a/aspnetcore/diagnostics/mvc1002.md +++ b/aspnetcore/diagnostics/mvc1002.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule MVC1002: Route attribute cannot be appli author: pranavkm monikerRange: '>= aspnetcore-3.1' ms.author: wpickett -ms.date: 10/22/2021 +ms.date: 03/27/2025 uid: diagnostics/mvc1002 --- # MVC1002: Route attribute cannot be applied to page handler methods diff --git a/aspnetcore/diagnostics/mvc1003.md b/aspnetcore/diagnostics/mvc1003.md index 49eb4f6e6ae0..ab2b66839f98 100644 --- a/aspnetcore/diagnostics/mvc1003.md +++ b/aspnetcore/diagnostics/mvc1003.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule MVC1003: Route attributes cannot be appl author: pranavkm monikerRange: '>= aspnetcore-3.1' ms.author: wpickett -ms.date: 10/22/2021 +ms.date: 03/27/2025 uid: diagnostics/mvc1003 --- # MVC1003: Route attributes cannot be applied to page models diff --git a/aspnetcore/diagnostics/mvc1004.md b/aspnetcore/diagnostics/mvc1004.md index 879f13c17a91..6dc0366da146 100644 --- a/aspnetcore/diagnostics/mvc1004.md +++ b/aspnetcore/diagnostics/mvc1004.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule MVC1004: Rename model bound parameter" author: pranavkm monikerRange: '>= aspnetcore-3.1' ms.author: riande -ms.date: 10/22/2021 +ms.date: 03/27/2025 uid: diagnostics/mvc1004 --- # MVC1004: Rename model bound parameter diff --git a/aspnetcore/diagnostics/mvc1005.md b/aspnetcore/diagnostics/mvc1005.md index 91ab76377c2e..4386d3655388 100644 --- a/aspnetcore/diagnostics/mvc1005.md +++ b/aspnetcore/diagnostics/mvc1005.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule MVC1005: Cannot use UseMvc with Endpoint author: pranavkm monikerRange: '>= aspnetcore-3.1' ms.author: riande -ms.date: 10/22/2021 +ms.date: 03/27/2025 uid: diagnostics/mvc1005 --- # MVC1005: Cannot use UseMvc with Endpoint Routing diff --git a/aspnetcore/diagnostics/mvc1006.md b/aspnetcore/diagnostics/mvc1006.md index 365ab98c84f3..977eb88dcb8b 100644 --- a/aspnetcore/diagnostics/mvc1006.md +++ b/aspnetcore/diagnostics/mvc1006.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule MVC1006: Methods containing TagHelpers m author: pranavkm monikerRange: '>= aspnetcore-3.1' ms.author: wpickett -ms.date: 10/22/2021 +ms.date: 03/27/2025 uid: diagnostics/mvc1006 --- # MVC1006: Methods containing TagHelpers must be async and return Task diff --git a/aspnetcore/fundamentals/aot/native-aot-tutorial.md b/aspnetcore/fundamentals/aot/native-aot-tutorial.md index 2dfc105cf755..badfd5e2ffff 100644 --- a/aspnetcore/fundamentals/aot/native-aot-tutorial.md +++ b/aspnetcore/fundamentals/aot/native-aot-tutorial.md @@ -7,7 +7,7 @@ ms.topic: tutorial content_well_notification: AI-contribution ms.author: midenn ms.custom: mvc -ms.date: 5/10/2023 +ms.date: 05/13/2025 uid: fundamentals/native-aot-tutorial ai-usage: ai-assisted --- diff --git a/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg001.md b/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg001.md index 7f3bcd441d1e..4588121f266c 100644 --- a/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg001.md +++ b/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg001.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule RDG001: Unable to resolve route pattern" author: captainsafia monikerRange: '>= aspnetcore-8.0' ms.author: safia -ms.date: 09/15/2023 +ms.date: 03/29/2025 uid: fundamentals/aot/request-delegate-generator/diagnostics/rdg001 --- # RDG001: Unable to resolve route pattern diff --git a/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg002.md b/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg002.md index 4c66f4e126e1..a1d1edce1a9f 100644 --- a/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg002.md +++ b/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg002.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule RDG002: Unable to resolve endpoint handl author: captainsafia monikerRange: '>= aspnetcore-8.0' ms.author: safia -ms.date: 09/15/2023 +ms.date: 03/29/2025 uid: fundamentals/aot/request-delegate-generator/diagnostics/rdg002 --- # RDG002: Unable to resolve endpoint handler diff --git a/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg003.md b/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg003.md index 64cbce7bad05..01fbaff584df 100644 --- a/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg003.md +++ b/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg003.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule RDG003: Unable to resolve parameter" author: captainsafia monikerRange: '>= aspnetcore-8.0' ms.author: safia -ms.date: 09/15/2023 +ms.date: 03/29/2025 uid: fundamentals/aot/request-delegate-generator/diagnostics/rdg003 --- # RDG003: Unable to resolve parameter diff --git a/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg004.md b/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg004.md index 6ebe5d674d5f..37d130c1f70a 100644 --- a/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg004.md +++ b/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg004.md @@ -5,7 +5,7 @@ author: captainsafia monikerRange: '>= aspnetcore-8.0' content_well_notification: AI-contribution ms.author: safia -ms.date: 09/15/2023 +ms.date: 03/29/2025 uid: fundamentals/aot/request-delegate-generator/diagnostics/rdg004 ai-usage: ai-assisted --- diff --git a/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg005.md b/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg005.md index 279e12b38e97..a70892f77065 100644 --- a/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg005.md +++ b/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg005.md @@ -5,7 +5,7 @@ author: captainsafia monikerRange: '>= aspnetcore-8.0' ms.author: safia content_well_notification: AI-contribution -ms.date: 9/27/2023 +ms.date: 03/29/2025 uid: fundamentals/aot/request-delegate-generator/diagnostics/rdg005 ai-usage: ai-assisted --- diff --git a/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg006.md b/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg006.md index 09ef5907e0f3..edaae068ab75 100644 --- a/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg006.md +++ b/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg006.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule RDG006: Invalid constructor parameters" author: captainsafia monikerRange: '>= aspnetcore-8.0' ms.author: safia -ms.date: 9/29/2023 +ms.date: 03/29/2025 uid: fundamentals/aot/request-delegate-generator/diagnostics/rdg006 --- # RDG006: Invalid constructor parameters diff --git a/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg007.md b/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg007.md index 74b1e06bb835..7978834ea1ef 100644 --- a/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg007.md +++ b/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg007.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule RDG007: No valid constructor found" author: captainsafia monikerRange: '>= aspnetcore-8.0' ms.author: safia -ms.date: 09/15/2023 +ms.date: 03/29/2025 uid: fundamentals/aot/request-delegate-generator/diagnostics/rdg007 --- # RDG007: No valid constructor found diff --git a/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg008.md b/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg008.md index 4c5f7f0fc7ee..31aca0d4b4cb 100644 --- a/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg008.md +++ b/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg008.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule RDG008: Multiple public constructors" author: captainsafia monikerRange: '>= aspnetcore-8.0' ms.author: safia -ms.date: 10/10/2023 +ms.date: 03/29/2025 uid: fundamentals/aot/request-delegate-generator/diagnostics/rdg008 --- # RDG008: Multiple public constructors diff --git a/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg009.md b/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg009.md index 21a44f6e280b..a63c97317467 100644 --- a/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg009.md +++ b/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg009.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule RDG009: Invalid nested AsParameters" author: captainsafia monikerRange: '>= aspnetcore-8.0' ms.author: safia -ms.date: 11/1/2023 +ms.date: 03/29/2025 uid: fundamentals/aot/request-delegate-generator/diagnostics/rdg009 --- # RDG009: Invalid nested AsParameters diff --git a/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg010.md b/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg010.md index ede63cc938ec..36035557c3a9 100644 --- a/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg010.md +++ b/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg010.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule RDG010: InvalidAsParameters Nullable" author: captainsafia monikerRange: '>= aspnetcore-8.0' ms.author: safia -ms.date: 09/15/2023 +ms.date: 03/29/2025 uid: fundamentals/aot/request-delegate-generator/diagnostics/rdg010 --- # RDG010: InvalidAsParameters Nullable diff --git a/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg011.md b/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg011.md index 6266a458d360..0e8ade142bd8 100644 --- a/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg011.md +++ b/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg011.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule RDG011: Type parameters not supported" author: captainsafia monikerRange: '>= aspnetcore-8.0' ms.author: safia -ms.date: 09/15/2023 +ms.date: 03/29/2025 uid: fundamentals/aot/request-delegate-generator/diagnostics/rdg011 --- # RDG011: Type parameters not supported diff --git a/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg012.md b/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg012.md index bb9815f719e1..385fd2bfc374 100644 --- a/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg012.md +++ b/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg012.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule RDG012: Unable to resolve inaccessible t author: captainsafia monikerRange: '>= aspnetcore-8.0' ms.author: safia -ms.date: 09/15/2023 +ms.date: 03/29/2025 uid: fundamentals/aot/request-delegate-generator/diagnostics/rdg012 --- # RDG012: Unable to resolve inaccessible type diff --git a/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg013.md b/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg013.md index c02e2d3f8d61..6e288eb15fb7 100644 --- a/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg013.md +++ b/aspnetcore/fundamentals/aot/request-delegate-generator/diagnostics/rdg013.md @@ -4,7 +4,7 @@ description: "Learn about analysis rule RDG013: Invalid source attributes" author: captainsafia monikerRange: '>= aspnetcore-8.0' ms.author: safia -ms.date: 10/5/2023 +ms.date: 03/29/2025 uid: fundamentals/aot/request-delegate-generator/diagnostics/rdg013 --- # RDG013: Invalid source attributes diff --git a/aspnetcore/fundamentals/aot/request-delegate-generator/rdg.md b/aspnetcore/fundamentals/aot/request-delegate-generator/rdg.md index a2c781b95ea0..94bdb39b466c 100644 --- a/aspnetcore/fundamentals/aot/request-delegate-generator/rdg.md +++ b/aspnetcore/fundamentals/aot/request-delegate-generator/rdg.md @@ -6,7 +6,7 @@ ms.author: riande content_well_notification: AI-contribution monikerRange: '>= aspnetcore-8.0' ms.topic: article -ms.date: 9/21/2023 +ms.date: 03/01/2025 uid: fundamentals/aot/rdg ai-usage: ai-assisted --- diff --git a/aspnetcore/fundamentals/app-state.md b/aspnetcore/fundamentals/app-state.md index 2bd8b3582429..aaef80256af8 100644 --- a/aspnetcore/fundamentals/app-state.md +++ b/aspnetcore/fundamentals/app-state.md @@ -4,7 +4,7 @@ author: tdykstra description: Discover approaches to preserve session between requests. ms.author: tdykstra ms.custom: mvc -ms.date: 05/29/2024 +ms.date: 04/24/2025 uid: fundamentals/app-state --- # Session and state management in ASP.NET Core diff --git a/aspnetcore/fundamentals/choose-aspnet-framework.md b/aspnetcore/fundamentals/choose-aspnet-framework.md index 816359c28f0f..5ee7e1746b9c 100644 --- a/aspnetcore/fundamentals/choose-aspnet-framework.md +++ b/aspnetcore/fundamentals/choose-aspnet-framework.md @@ -4,7 +4,7 @@ author: tdykstra description: Explains ASP.NET Core vs. ASP.NET 4.x and how to choose between them. ms.author: tdykstra ms.custom: mvc -ms.date: 02/12/2020 +ms.date: 05/28/2025 uid: fundamentals/choose-between-aspnet-and-aspnetcore --- # Choose between ASP.NET 4.x and ASP.NET Core diff --git a/aspnetcore/fundamentals/configuration/index.md b/aspnetcore/fundamentals/configuration/index.md index 30bb8be51875..840f88e82a20 100644 --- a/aspnetcore/fundamentals/configuration/index.md +++ b/aspnetcore/fundamentals/configuration/index.md @@ -5,7 +5,7 @@ description: Learn how to use the Configuration API to configure AppSettings in monikerRange: '>= aspnetcore-3.1' ms.author: tdykstra ms.custom: mvc -ms.date: 04/26/2024 +ms.date: 06/28/2025 uid: fundamentals/configuration/index --- diff --git a/aspnetcore/fundamentals/configuration/options.md b/aspnetcore/fundamentals/configuration/options.md index f3c89f03554f..fb9c74770bb0 100644 --- a/aspnetcore/fundamentals/configuration/options.md +++ b/aspnetcore/fundamentals/configuration/options.md @@ -5,7 +5,7 @@ description: Discover how to use the options pattern to represent groups of rela monikerRange: '>= aspnetcore-3.1' ms.author: tdykstra ms.custom: mvc -ms.date: 04/19/2025 +ms.date: 04/20/2025 uid: fundamentals/configuration/options --- # Options pattern in ASP.NET Core diff --git a/aspnetcore/fundamentals/dependency-injection/includes/dependency-injection-5-7.md b/aspnetcore/fundamentals/dependency-injection/includes/dependency-injection-5-7.md index 352d6cf6c832..5cde84c3948c 100644 --- a/aspnetcore/fundamentals/dependency-injection/includes/dependency-injection-5-7.md +++ b/aspnetcore/fundamentals/dependency-injection/includes/dependency-injection-5-7.md @@ -1,7 +1,7 @@ --- author: rick-anderson ms.author: riande -ms.date: 10/17/2023 +ms.date: 04/01/2025 --- :::moniker range=">= aspnetcore-6.0 <= aspnetcore-7.0" diff --git a/aspnetcore/fundamentals/dotnet-scaffold-telemetry.md b/aspnetcore/fundamentals/dotnet-scaffold-telemetry.md index 333937134d88..fa449ceb24ad 100644 --- a/aspnetcore/fundamentals/dotnet-scaffold-telemetry.md +++ b/aspnetcore/fundamentals/dotnet-scaffold-telemetry.md @@ -4,7 +4,7 @@ author: tdykstra description: Learn about the telemetry collected by the dotnet-scaffold CLI tool. monikerRange: '>= aspnetcore-8.0' ms.author: tdykstra -ms.date: 11/06/2024 +ms.date: 11/12/2024 uid: fundamentals/dotnet-scaffold-telemetry --- # dotnet-scaffold telemetry diff --git a/aspnetcore/fundamentals/environments.md b/aspnetcore/fundamentals/environments.md index bf59f2606d78..17d11f6ec9d5 100644 --- a/aspnetcore/fundamentals/environments.md +++ b/aspnetcore/fundamentals/environments.md @@ -5,7 +5,7 @@ description: Learn how to control app behavior across multiple environments in A monikerRange: '>= aspnetcore-3.1' ms.author: tdykstra ms.custom: mvc -ms.date: 04/26/2024 +ms.date: 09/18/2024 uid: fundamentals/environments --- # Use multiple environments in ASP.NET Core diff --git a/aspnetcore/fundamentals/error-handling.md b/aspnetcore/fundamentals/error-handling.md index 5c3101f502a9..f9b0f5828b13 100644 --- a/aspnetcore/fundamentals/error-handling.md +++ b/aspnetcore/fundamentals/error-handling.md @@ -5,7 +5,7 @@ description: Discover how to handle errors in ASP.NET Core apps. monikerRange: '>= aspnetcore-3.1' ms.author: tdykstra ms.custom: mvc -ms.date: 08/25/2024 +ms.date: 01/15/2025 uid: fundamentals/error-handling --- # Handle errors in ASP.NET Core diff --git a/aspnetcore/fundamentals/host/hosted-services.md b/aspnetcore/fundamentals/host/hosted-services.md index e945d7fd8c2d..fd24ebbdafb5 100644 --- a/aspnetcore/fundamentals/host/hosted-services.md +++ b/aspnetcore/fundamentals/host/hosted-services.md @@ -5,7 +5,7 @@ description: Learn how to implement background tasks with hosted services in ASP monikerRange: '>= aspnetcore-3.1' ms.author: tdykstra ms.custom: mvc -ms.date: 5/10/2024 +ms.date: 05/28/2025 uid: fundamentals/host/hosted-services --- # Background tasks with hosted services in ASP.NET Core diff --git a/aspnetcore/fundamentals/host/web-host.md b/aspnetcore/fundamentals/host/web-host.md index 04ac9d0ae24a..4b9739c76ecb 100644 --- a/aspnetcore/fundamentals/host/web-host.md +++ b/aspnetcore/fundamentals/host/web-host.md @@ -5,7 +5,7 @@ description: Learn about Web Host in ASP.NET Core, which is responsible for app monikerRange: '>= aspnetcore-3.1' ms.author: tdykstra ms.custom: mvc -ms.date: 08/29/2024 +ms.date: 09/06/2024 uid: fundamentals/host/web-host --- # ASP.NET Core Web Host diff --git a/aspnetcore/fundamentals/http-context.md b/aspnetcore/fundamentals/http-context.md index 28b833ecef7f..3fa1a87f7e4d 100644 --- a/aspnetcore/fundamentals/http-context.md +++ b/aspnetcore/fundamentals/http-context.md @@ -5,7 +5,7 @@ description: Learn about using HttpContext in ASP.NET Core apps. HttpContext isn monikerRange: '>= aspnetcore-3.1' ms.author: tdykstra ms.custom: mvc -ms.date: 01/31/2022 +ms.date: 02/12/2025 uid: fundamentals/httpcontext --- # Access `HttpContext` in ASP.NET Core diff --git a/aspnetcore/fundamentals/http-logging/includes/index-6-7.md b/aspnetcore/fundamentals/http-logging/includes/index-6-7.md index 4aa05f958d65..9e66494beb6c 100644 --- a/aspnetcore/fundamentals/http-logging/includes/index-6-7.md +++ b/aspnetcore/fundamentals/http-logging/includes/index-6-7.md @@ -1,7 +1,7 @@ --- author: rick-anderson ms.author: riande -ms.date: 10/19/2023 +ms.date: 09/25/2024 --- :::moniker range=">= aspnetcore-6.0 <= aspnetcore-7.0" diff --git a/aspnetcore/fundamentals/http-logging/index.md b/aspnetcore/fundamentals/http-logging/index.md index add6d1f89903..0455181c262b 100644 --- a/aspnetcore/fundamentals/http-logging/index.md +++ b/aspnetcore/fundamentals/http-logging/index.md @@ -5,7 +5,7 @@ description: Learn how to log HTTP requests and responses. monikerRange: '>= aspnetcore-6.0' ms.author: tdykstra ms.custom: mvc -ms.date: 10/25/2023 +ms.date: 04/25/2025 uid: fundamentals/http-logging/index --- # HTTP logging in ASP.NET Core diff --git a/aspnetcore/fundamentals/localization.md b/aspnetcore/fundamentals/localization.md index eb82772cf3ea..b131b2ce2bf2 100644 --- a/aspnetcore/fundamentals/localization.md +++ b/aspnetcore/fundamentals/localization.md @@ -4,7 +4,7 @@ author: rick-anderson description: Learn how ASP.NET Core provides services and middleware for localizing content into different languages and cultures. ms.author: riande monikerRange: '>= aspnetcore-3.1' -ms.date: 02/23/2023 +ms.date: 06/20/2025 uid: fundamentals/localization --- # Globalization and localization in ASP.NET Core diff --git a/aspnetcore/fundamentals/localization/make-content-localizable.md b/aspnetcore/fundamentals/localization/make-content-localizable.md index 6512ab7692a3..ca8e36f6ff28 100644 --- a/aspnetcore/fundamentals/localization/make-content-localizable.md +++ b/aspnetcore/fundamentals/localization/make-content-localizable.md @@ -4,7 +4,7 @@ author: rick-anderson description: Learn how to make an ASP.NET Core app's content localizable to prepare the app for localizing content into different languages and cultures. ms.author: riande monikerRange: '>= aspnetcore-5.0' -ms.date: 02/23/2023 +ms.date: 06/20/2025 uid: fundamentals/localization/make-content-localizable --- # Make an ASP.NET Core app's content localizable diff --git a/aspnetcore/fundamentals/localization/provide-resources.md b/aspnetcore/fundamentals/localization/provide-resources.md index 9bef44351756..93b8ad5118c8 100644 --- a/aspnetcore/fundamentals/localization/provide-resources.md +++ b/aspnetcore/fundamentals/localization/provide-resources.md @@ -4,7 +4,7 @@ author: rick-anderson description: Learn how to provide localized resources for localizing content of an ASP.NET Core app into different languages and cultures. ms.author: riande monikerRange: '>= aspnetcore-5.0' -ms.date: 02/23/2023 +ms.date: 06/20/2025 uid: fundamentals/localization/provide-resources --- # Provide localized resources for languages and cultures in an ASP.NET Core app diff --git a/aspnetcore/fundamentals/localization/select-language-culture.md b/aspnetcore/fundamentals/localization/select-language-culture.md index 35aac6d942ef..b229bf52bf5b 100644 --- a/aspnetcore/fundamentals/localization/select-language-culture.md +++ b/aspnetcore/fundamentals/localization/select-language-culture.md @@ -4,7 +4,7 @@ author: rick-anderson description: Learn how to select a language and culture when localizing content into different languages and cultures in an ASP.NET Core app. ms.author: riande monikerRange: '>= aspnetcore-5.0' -ms.date: 5/9/2023 +ms.date: 06/20/2025 uid: fundamentals/localization/select-language-culture --- # Implement a strategy to select the language/culture for each request in a localized ASP.NET Core app diff --git a/aspnetcore/fundamentals/logging/index.md b/aspnetcore/fundamentals/logging/index.md index 8a995c25b4d7..e3669581f76f 100644 --- a/aspnetcore/fundamentals/logging/index.md +++ b/aspnetcore/fundamentals/logging/index.md @@ -5,7 +5,7 @@ description: Learn how to use the logging framework provided by the Microsoft.Ex monikerRange: '>= aspnetcore-3.1' ms.author: tdykstra ms.custom: mvc -ms.date: 9/5/2023 +ms.date: 09/18/2024 uid: fundamentals/logging/index --- diff --git a/aspnetcore/fundamentals/map-static-files.md b/aspnetcore/fundamentals/map-static-files.md index 11eb8b7536ce..c6f7f1e794ea 100644 --- a/aspnetcore/fundamentals/map-static-files.md +++ b/aspnetcore/fundamentals/map-static-files.md @@ -5,7 +5,7 @@ description: Learn how to serve and secure mapped static files and configure sta monikerRange: '>= aspnetcore-9.0' ms.author: riande ms.custom: mvc -ms.date: 3/18/2025 +ms.date: 06/09/2025 uid: fundamentals/map-static-files --- # Map static files in ASP.NET Core diff --git a/aspnetcore/fundamentals/middleware/index.md b/aspnetcore/fundamentals/middleware/index.md index 777db4b987f4..90ada4a5d22e 100644 --- a/aspnetcore/fundamentals/middleware/index.md +++ b/aspnetcore/fundamentals/middleware/index.md @@ -5,7 +5,7 @@ description: Learn about ASP.NET Core middleware and the request pipeline. monikerRange: '>= aspnetcore-3.0' ms.author: tdykstra ms.custom: mvc -ms.date: 05/03/2023 +ms.date: 06/21/2025 uid: fundamentals/middleware/index ms.ai: assisted --- diff --git a/aspnetcore/fundamentals/middleware/request-response.md b/aspnetcore/fundamentals/middleware/request-response.md index e516cdd41f45..975eff2e17d8 100644 --- a/aspnetcore/fundamentals/middleware/request-response.md +++ b/aspnetcore/fundamentals/middleware/request-response.md @@ -5,7 +5,7 @@ description: Learn how to read the request body and write the response body in A monikerRange: '>= aspnetcore-3.0' ms.author: tdykstra ms.custom: mvc -ms.date: 4/22/2025 +ms.date: 04/24/2025 uid: fundamentals/middleware/request-response --- # Request and response operations in ASP.NET Core diff --git a/aspnetcore/fundamentals/middleware/write.md b/aspnetcore/fundamentals/middleware/write.md index 18526e63896b..76940f0c6dc3 100644 --- a/aspnetcore/fundamentals/middleware/write.md +++ b/aspnetcore/fundamentals/middleware/write.md @@ -5,7 +5,7 @@ description: Learn how to write custom ASP.NET Core middleware. monikerRange: '>= aspnetcore-3.1' ms.author: riande ms.custom: mvc -ms.date: 12/18/2021 +ms.date: 06/21/2025 uid: fundamentals/middleware/write --- # Write custom ASP.NET Core middleware diff --git a/aspnetcore/fundamentals/minimal-apis.md b/aspnetcore/fundamentals/minimal-apis.md index 97dfe63d41f0..8fc7ce973b6d 100644 --- a/aspnetcore/fundamentals/minimal-apis.md +++ b/aspnetcore/fundamentals/minimal-apis.md @@ -5,7 +5,7 @@ description: Provides an overview of minimal APIs in ASP.NET Core ms.author: wpickett content_well_notification: AI-contribution monikerRange: '>= aspnetcore-6.0' -ms.date: 05/19/2025 +ms.date: 05/20/2025 uid: fundamentals/minimal-apis ai-usage: ai-assisted --- diff --git a/aspnetcore/fundamentals/minimal-apis/includes/responses7-8.md b/aspnetcore/fundamentals/minimal-apis/includes/responses7-8.md index ef4ae1df7c9f..52202f858f90 100644 --- a/aspnetcore/fundamentals/minimal-apis/includes/responses7-8.md +++ b/aspnetcore/fundamentals/minimal-apis/includes/responses7-8.md @@ -1,7 +1,7 @@ --- author: tdykstra ms.author: tdykstra -ms.date: 04/10/2024 +ms.date: 08/07/2024 --- :::moniker range=">= aspnetcore-7.0 <= aspnetcore-8.0" diff --git a/aspnetcore/fundamentals/minimal-apis/parameter-binding.md b/aspnetcore/fundamentals/minimal-apis/parameter-binding.md index dc43d7de5a2c..95ec590ce429 100644 --- a/aspnetcore/fundamentals/minimal-apis/parameter-binding.md +++ b/aspnetcore/fundamentals/minimal-apis/parameter-binding.md @@ -4,7 +4,7 @@ author: wadepickett description: Learn how parameters are populated before invoking minimal route handlers. ms.author: wpickett monikerRange: '>= aspnetcore-7.0' -ms.date: 05/17/2025 +ms.date: 05/18/2025 uid: fundamentals/minimal-apis/parameter-binding --- diff --git a/aspnetcore/fundamentals/minimal-apis/responses.md b/aspnetcore/fundamentals/minimal-apis/responses.md index 3da92ee7747c..09f826dec11d 100644 --- a/aspnetcore/fundamentals/minimal-apis/responses.md +++ b/aspnetcore/fundamentals/minimal-apis/responses.md @@ -4,7 +4,7 @@ author: brunolins16 description: Learn how to create responses for minimal APIs in ASP.NET Core. ms.author: brolivei monikerRange: '>= aspnetcore-7.0' -ms.date: 02/07/2025 +ms.date: 05/09/2025 uid: fundamentals/minimal-apis/responses --- diff --git a/aspnetcore/fundamentals/minimal-apis/webapplication.md b/aspnetcore/fundamentals/minimal-apis/webapplication.md index 8f9a3362b15f..7e76d46cca91 100644 --- a/aspnetcore/fundamentals/minimal-apis/webapplication.md +++ b/aspnetcore/fundamentals/minimal-apis/webapplication.md @@ -4,7 +4,7 @@ author: wadepickett description: Learn about how to use WebApplication and WebApplicationBuilder. ms.author: wpickett monikerRange: '>= aspnetcore-7.0' -ms.date: 10/31/2022 +ms.date: 05/18/2025 uid: fundamentals/minimal-apis/webapplication --- diff --git a/aspnetcore/fundamentals/native-aot.md b/aspnetcore/fundamentals/native-aot.md index 9e9898d5ca6b..bb139e3dcd21 100644 --- a/aspnetcore/fundamentals/native-aot.md +++ b/aspnetcore/fundamentals/native-aot.md @@ -5,7 +5,7 @@ ms.author: riande description: Learn about ASP.NET Core support for Native AOT content_well_notification: AI-contribution ms.custom: mvc, engagement-fy23 -ms.date: 8/11/2024 +ms.date: 03/27/2025 uid: fundamentals/native-aot ai-usage: ai-assisted --- diff --git a/aspnetcore/fundamentals/openapi/aspnetcore-openapi.md b/aspnetcore/fundamentals/openapi/aspnetcore-openapi.md index f1075a9fb687..cf83734e57ce 100644 --- a/aspnetcore/fundamentals/openapi/aspnetcore-openapi.md +++ b/aspnetcore/fundamentals/openapi/aspnetcore-openapi.md @@ -5,7 +5,7 @@ description: Learn how to generate and customize OpenAPI documents in an ASP.NET ms.author: safia monikerRange: '>= aspnetcore-6.0' ms.custom: mvc -ms.date: 3/18/2025 +ms.date: 04/19/2025 uid: fundamentals/openapi/aspnetcore-openapi --- # Generate OpenAPI documents diff --git a/aspnetcore/fundamentals/openapi/customize-openapi.md b/aspnetcore/fundamentals/openapi/customize-openapi.md index eee112231b9f..1e0d0fc8fdba 100644 --- a/aspnetcore/fundamentals/openapi/customize-openapi.md +++ b/aspnetcore/fundamentals/openapi/customize-openapi.md @@ -5,7 +5,7 @@ description: Learn how to customize OpenAPI documents in an ASP.NET Core app ms.author: safia monikerRange: '>= aspnetcore-9.0' ms.custom: mvc -ms.date: 05/15/2025 +ms.date: 05/17/2025 uid: fundamentals/openapi/customize-openapi --- # Customize OpenAPI documents diff --git a/aspnetcore/fundamentals/openapi/include-metadata.md b/aspnetcore/fundamentals/openapi/include-metadata.md index 5c44632066ad..a6b8b37fa272 100644 --- a/aspnetcore/fundamentals/openapi/include-metadata.md +++ b/aspnetcore/fundamentals/openapi/include-metadata.md @@ -5,7 +5,7 @@ description: Learn how to add OpenAPI metadata in an ASP.NET Core app. ms.author: safia monikerRange: '>= aspnetcore-9.0' ms.custom: mvc -ms.date: 4/22/2024 +ms.date: 06/12/2025 uid: fundamentals/openapi/include-metadata --- # Include OpenAPI metadata in an ASP.NET Core app diff --git a/aspnetcore/fundamentals/openapi/openapi-comments.md b/aspnetcore/fundamentals/openapi/openapi-comments.md index ae1cacd0cce8..f7692621b3e3 100644 --- a/aspnetcore/fundamentals/openapi/openapi-comments.md +++ b/aspnetcore/fundamentals/openapi/openapi-comments.md @@ -5,7 +5,7 @@ description: Learn how to integrate XML documentation comments on types by OpenA ms.author: safia monikerRange: '>= aspnetcore-10.0' ms.custom: mvc -ms.date: 4/12/2025 +ms.date: 04/15/2025 uid: fundamentals/openapi/aspnet-openapi-xml --- diff --git a/aspnetcore/fundamentals/openapi/openapi-tools.md b/aspnetcore/fundamentals/openapi/openapi-tools.md index ef22ff489704..ab9d3c3004e0 100644 --- a/aspnetcore/fundamentals/openapi/openapi-tools.md +++ b/aspnetcore/fundamentals/openapi/openapi-tools.md @@ -4,7 +4,7 @@ author: ryanbrandenburg description: Demonstrates how to use the 'Microsoft.dotnet-openapi' tool to add references to OpenAPI files. monikerRange: '>= aspnetcore-3.1' ms.author: wpickett -ms.date: 3/9/2022 +ms.date: 08/06/2024 uid: fundamentals/openapi/openapi-tools --- # .NET OpenAPI tool command reference and installation diff --git a/aspnetcore/fundamentals/openapi/overview.md b/aspnetcore/fundamentals/openapi/overview.md index 20b1ae8223ff..ba3147747282 100644 --- a/aspnetcore/fundamentals/openapi/overview.md +++ b/aspnetcore/fundamentals/openapi/overview.md @@ -4,7 +4,7 @@ author: rick-anderson description: Learn about OpenAPI features in ASP.NET Core. ms.author: riande monikerRange: '>= aspnetcore-6.0' -ms.date: 8/02/2024 +ms.date: 05/14/2025 uid: fundamentals/openapi/overview --- # OpenAPI support in ASP.NET Core API apps diff --git a/aspnetcore/fundamentals/openapi/using-openapi-documents.md b/aspnetcore/fundamentals/openapi/using-openapi-documents.md index 23e3c625df98..30e2bb19a1cc 100644 --- a/aspnetcore/fundamentals/openapi/using-openapi-documents.md +++ b/aspnetcore/fundamentals/openapi/using-openapi-documents.md @@ -5,7 +5,7 @@ description: Learn how to use OpenAPI documents in an ASP.NET Core app. ms.author: safia monikerRange: '>= aspnetcore-6.0' ms.custom: mvc -ms.date: 09/04/2024 +ms.date: 05/09/2025 uid: fundamentals/openapi/using-openapi-documents --- # Use openAPI documents diff --git a/aspnetcore/fundamentals/owin.md b/aspnetcore/fundamentals/owin.md index f33b6a9ff2ca..09da38883efe 100644 --- a/aspnetcore/fundamentals/owin.md +++ b/aspnetcore/fundamentals/owin.md @@ -4,7 +4,7 @@ author: ardalis description: Discover how ASP.NET Core supports the Open Web Interface for .NET (OWIN), which allows web apps to be decoupled from web servers. ms.author: riande ms.custom: H1Hack27Feb2017 -ms.date: 2/8/2021 +ms.date: 04/24/2025 uid: fundamentals/owin --- # Open Web Interface for .NET (OWIN) with ASP.NET Core diff --git a/aspnetcore/fundamentals/portable-object-localization.md b/aspnetcore/fundamentals/portable-object-localization.md index a45a3a48b33a..37bbda6adf79 100644 --- a/aspnetcore/fundamentals/portable-object-localization.md +++ b/aspnetcore/fundamentals/portable-object-localization.md @@ -3,7 +3,7 @@ title: Configure portable object localization in ASP.NET Core author: sebastienros description: This article introduces Portable Object files and outlines steps for using them in an ASP.NET Core application with the Orchard Core framework. ms.author: wpickett -ms.date: 09/26/2017 +ms.date: 04/06/2025 uid: fundamentals/portable-object-localization --- # Configure portable object localization in ASP.NET Core diff --git a/aspnetcore/fundamentals/routing.md b/aspnetcore/fundamentals/routing.md index c8bdc9f5afa0..1cde1e20df8c 100644 --- a/aspnetcore/fundamentals/routing.md +++ b/aspnetcore/fundamentals/routing.md @@ -6,7 +6,7 @@ monikerRange: '>= aspnetcore-3.1' content_well_notification: AI-contribution ms.author: tdykstra ms.custom: mvc -ms.date: 6/14/2023 +ms.date: 09/18/2024 uid: fundamentals/routing ai-usage: ai-assisted --- diff --git a/aspnetcore/fundamentals/servers/httpsys.md b/aspnetcore/fundamentals/servers/httpsys.md index cb7a5fa93f07..fb0f23ec667e 100644 --- a/aspnetcore/fundamentals/servers/httpsys.md +++ b/aspnetcore/fundamentals/servers/httpsys.md @@ -5,7 +5,7 @@ description: Learn about HTTP.sys, a web server for ASP.NET Core on Windows. Bui monikerRange: '>= aspnetcore-2.1' ms.author: tdykstra ms.custom: mvc -ms.date: 06/12/2025 +ms.date: 06/13/2025 uid: fundamentals/servers/httpsys --- # HTTP.sys web server implementation in ASP.NET Core diff --git a/aspnetcore/fundamentals/servers/index.md b/aspnetcore/fundamentals/servers/index.md index fff30c677fab..9196d11b4864 100644 --- a/aspnetcore/fundamentals/servers/index.md +++ b/aspnetcore/fundamentals/servers/index.md @@ -5,7 +5,7 @@ description: Discover the web servers Kestrel and HTTP.sys for ASP.NET Core. Lea monikerRange: '>= aspnetcore-2.1' ms.author: tdykstra ms.custom: mvc -ms.date: 11/07/2019 +ms.date: 05/28/2025 uid: fundamentals/servers/index --- # Web server implementations in ASP.NET Core diff --git a/aspnetcore/fundamentals/servers/kestrel/endpoints.md b/aspnetcore/fundamentals/servers/kestrel/endpoints.md index a92bd56852e9..2a7fac4c9c48 100644 --- a/aspnetcore/fundamentals/servers/kestrel/endpoints.md +++ b/aspnetcore/fundamentals/servers/kestrel/endpoints.md @@ -5,7 +5,7 @@ description: Learn about configuring endpoints with Kestrel, the cross-platform monikerRange: '>= aspnetcore-5.0' ms.author: tdykstra ms.custom: mvc -ms.date: 2/4/2025 +ms.date: 03/05/2025 uid: fundamentals/servers/kestrel/endpoints --- diff --git a/aspnetcore/fundamentals/servers/kestrel/http3.md b/aspnetcore/fundamentals/servers/kestrel/http3.md index f1bd35f9ebb7..5832d46e6df0 100644 --- a/aspnetcore/fundamentals/servers/kestrel/http3.md +++ b/aspnetcore/fundamentals/servers/kestrel/http3.md @@ -5,7 +5,7 @@ description: Learn about using HTTP/3 with Kestrel, the cross-platform web serve monikerRange: '>= aspnetcore-6.0' ms.author: wigodbe ms.custom: mvc, linux-related-content -ms.date: 08/24/2023 +ms.date: 06/08/2025 uid: fundamentals/servers/kestrel/http3 --- diff --git a/aspnetcore/fundamentals/servers/kestrel/when-to-use-a-reverse-proxy.md b/aspnetcore/fundamentals/servers/kestrel/when-to-use-a-reverse-proxy.md index 9a501d11c187..6a721bc72e44 100644 --- a/aspnetcore/fundamentals/servers/kestrel/when-to-use-a-reverse-proxy.md +++ b/aspnetcore/fundamentals/servers/kestrel/when-to-use-a-reverse-proxy.md @@ -5,7 +5,7 @@ description: Learn about when to use a reverse proxy in front of Kestrel, the cr monikerRange: '>= aspnetcore-5.0' ms.author: tdykstra ms.custom: mvc -ms.date: 04/01/2022 +ms.date: 02/06/2025 uid: fundamentals/servers/kestrel/when-to-use-a-reverse-proxy --- diff --git a/aspnetcore/fundamentals/servers/yarp/dests-health-checks.md b/aspnetcore/fundamentals/servers/yarp/dests-health-checks.md index 6935ee0e278e..cc23b032a5fc 100644 --- a/aspnetcore/fundamentals/servers/yarp/dests-health-checks.md +++ b/aspnetcore/fundamentals/servers/yarp/dests-health-checks.md @@ -4,7 +4,7 @@ title: YARP Destination health checks description: YARP Destination health checks author: samsp-msft ms.author: samsp -ms.date: 2/6/2025 +ms.date: 04/06/2025 ms.topic: article content_well_notification: AI-contribution ai-usage: ai-assisted diff --git a/aspnetcore/fundamentals/servers/yarp/distributed-tracing.md b/aspnetcore/fundamentals/servers/yarp/distributed-tracing.md index 93211051ff8e..48e18ace730e 100644 --- a/aspnetcore/fundamentals/servers/yarp/distributed-tracing.md +++ b/aspnetcore/fundamentals/servers/yarp/distributed-tracing.md @@ -4,7 +4,7 @@ title: YARP Distributed tracing description: YARP Distributed tracing author: samsp-msft ms.author: samsp -ms.date: 2/6/2025 +ms.date: 04/24/2025 ms.topic: article content_well_notification: AI-contribution ai-usage: ai-assisted diff --git a/aspnetcore/fundamentals/servers/yarp/extensibility.md b/aspnetcore/fundamentals/servers/yarp/extensibility.md index 0fd68f6ac197..08ee6e3ad0c1 100644 --- a/aspnetcore/fundamentals/servers/yarp/extensibility.md +++ b/aspnetcore/fundamentals/servers/yarp/extensibility.md @@ -4,7 +4,7 @@ title: Overview of extensibility description: Overview of extensibility author: samsp-msft ms.author: samsp -ms.date: 2/12/2025 +ms.date: 04/03/2025 ms.topic: article content_well_notification: AI-contribution ai-usage: ai-assisted diff --git a/aspnetcore/fundamentals/servers/yarp/grpc.md b/aspnetcore/fundamentals/servers/yarp/grpc.md index e6fb8073ac1b..67518592f0cb 100644 --- a/aspnetcore/fundamentals/servers/yarp/grpc.md +++ b/aspnetcore/fundamentals/servers/yarp/grpc.md @@ -4,7 +4,7 @@ title: YARP Proxying gRPC description: YARP Proxying gRPC author: samsp-msft ms.author: samsp -ms.date: 2/6/2025 +ms.date: 04/12/2025 ms.topic: article content_well_notification: AI-contribution ai-usage: ai-assisted diff --git a/aspnetcore/fundamentals/servers/yarp/header-guidelines.md b/aspnetcore/fundamentals/servers/yarp/header-guidelines.md index e8c5f0297b2b..a5c0806f9832 100644 --- a/aspnetcore/fundamentals/servers/yarp/header-guidelines.md +++ b/aspnetcore/fundamentals/servers/yarp/header-guidelines.md @@ -4,7 +4,7 @@ title: YARP HTTP header guidelines description: Learn about YARP HTTP header guidelines. author: samsp-msft ms.author: samsp -ms.date: 2/6/2025 +ms.date: 04/03/2025 ms.topic: article content_well_notification: AI-contribution ai-usage: ai-assisted diff --git a/aspnetcore/fundamentals/servers/yarp/https-tls.md b/aspnetcore/fundamentals/servers/yarp/https-tls.md index 1aad6f4bf7fd..b51e96747aa3 100644 --- a/aspnetcore/fundamentals/servers/yarp/https-tls.md +++ b/aspnetcore/fundamentals/servers/yarp/https-tls.md @@ -4,7 +4,7 @@ title: YARP HTTPS & TLS description: YARP HTTPS & TLS author: samsp-msft ms.author: samsp -ms.date: 2/6/2025 +ms.date: 02/14/2025 ms.topic: article content_well_notification: AI-contribution ai-usage: ai-assisted diff --git a/aspnetcore/fundamentals/servers/yarp/httpsys-delegation.md b/aspnetcore/fundamentals/servers/yarp/httpsys-delegation.md index 4d90cf0c9c09..87b0878c0b47 100644 --- a/aspnetcore/fundamentals/servers/yarp/httpsys-delegation.md +++ b/aspnetcore/fundamentals/servers/yarp/httpsys-delegation.md @@ -4,7 +4,7 @@ title: YARP HTTP.sys Delegation description: YARP HTTP.sys Delegation author: samsp-msft ms.author: samsp -ms.date: 2/6/2025 +ms.date: 04/03/2025 ms.topic: article content_well_notification: AI-contribution ai-usage: ai-assisted diff --git a/aspnetcore/fundamentals/servers/yarp/kubernetes-ingress.md b/aspnetcore/fundamentals/servers/yarp/kubernetes-ingress.md index febe309ce817..e33423d24fa0 100644 --- a/aspnetcore/fundamentals/servers/yarp/kubernetes-ingress.md +++ b/aspnetcore/fundamentals/servers/yarp/kubernetes-ingress.md @@ -4,7 +4,7 @@ title: YARP Kubernetes Ingress Controller description: YARP Kubernetes Ingress Controller author: samsp-msft ms.author: samsp -ms.date: 3/6/2025 +ms.date: 04/03/2025 ms.topic: article content_well_notification: AI-contribution ai-usage: ai-assisted diff --git a/aspnetcore/fundamentals/servers/yarp/lets-encrypt.md b/aspnetcore/fundamentals/servers/yarp/lets-encrypt.md index 3ca777f7a7e5..ec48649573e7 100644 --- a/aspnetcore/fundamentals/servers/yarp/lets-encrypt.md +++ b/aspnetcore/fundamentals/servers/yarp/lets-encrypt.md @@ -5,7 +5,7 @@ description: YARP Lets Encrypt author: samsp-msft monikerRange: '<= aspnetcore-7.0' ms.author: samsp -ms.date: 6/13/2025 +ms.date: 06/14/2025 ms.topic: article content_well_notification: AI-contribution ai-usage: ai-assisted diff --git a/aspnetcore/fundamentals/servers/yarp/middleware.md b/aspnetcore/fundamentals/servers/yarp/middleware.md index b1c6d137c21e..fd830b07b07d 100644 --- a/aspnetcore/fundamentals/servers/yarp/middleware.md +++ b/aspnetcore/fundamentals/servers/yarp/middleware.md @@ -4,7 +4,7 @@ title: YARP Middleware description: YARP Middleware author: samsp-msft ms.author: samsp -ms.date: 2/6/2025 +ms.date: 04/04/2025 ms.topic: article content_well_notification: AI-contribution ai-usage: ai-assisted diff --git a/aspnetcore/fundamentals/servers/yarp/service-fabric-int.md b/aspnetcore/fundamentals/servers/yarp/service-fabric-int.md index 6422600ae170..c4609e698fd1 100644 --- a/aspnetcore/fundamentals/servers/yarp/service-fabric-int.md +++ b/aspnetcore/fundamentals/servers/yarp/service-fabric-int.md @@ -4,7 +4,7 @@ title: YARP Service Fabric Integration description: YARP Service Fabric Integration author: samsp-msft ms.author: samsp -ms.date: 2/6/2025 +ms.date: 04/03/2025 ms.topic: article content_well_notification: AI-contribution ai-usage: ai-assisted diff --git a/aspnetcore/fundamentals/servers/yarp/transforms-response.md b/aspnetcore/fundamentals/servers/yarp/transforms-response.md index 3ba228a22eec..f52786d75f4f 100644 --- a/aspnetcore/fundamentals/servers/yarp/transforms-response.md +++ b/aspnetcore/fundamentals/servers/yarp/transforms-response.md @@ -4,7 +4,7 @@ title: YARP Response and Response Trailer Transforms description: YARP Response and Response Trailer Transforms author: samsp-msft ms.author: samsp -ms.date: 2/6/2025 +ms.date: 04/04/2025 ms.topic: article content_well_notification: AI-contribution ai-usage: ai-assisted diff --git a/aspnetcore/fundamentals/servers/yarp/yarp-overview.md b/aspnetcore/fundamentals/servers/yarp/yarp-overview.md index affcd3066fbc..d940e7b66181 100644 --- a/aspnetcore/fundamentals/servers/yarp/yarp-overview.md +++ b/aspnetcore/fundamentals/servers/yarp/yarp-overview.md @@ -4,7 +4,7 @@ title: Overview of YARP description: Overview of YARP author: samsp-msft ms.author: samsp -ms.date: 2/18/2025 +ms.date: 04/03/2025 ms.topic: article content_well_notification: AI-contribution ai-usage: ai-assisted diff --git a/aspnetcore/fundamentals/static-files.md b/aspnetcore/fundamentals/static-files.md index 4ac8b90188a8..9db4ab9ac29f 100644 --- a/aspnetcore/fundamentals/static-files.md +++ b/aspnetcore/fundamentals/static-files.md @@ -5,7 +5,7 @@ description: Learn how to serve and secure static files and configure static fil monikerRange: '>= aspnetcore-3.1' ms.author: riande ms.custom: mvc -ms.date: 7/25/2024 +ms.date: 03/18/2025 uid: fundamentals/static-files --- # Static files in ASP.NET Core diff --git a/aspnetcore/fundamentals/tools/dotnet-aspnet-codegenerator.md b/aspnetcore/fundamentals/tools/dotnet-aspnet-codegenerator.md index e9e61ea68019..d17a43bba0c7 100644 --- a/aspnetcore/fundamentals/tools/dotnet-aspnet-codegenerator.md +++ b/aspnetcore/fundamentals/tools/dotnet-aspnet-codegenerator.md @@ -4,7 +4,7 @@ author: tdykstra description: The ASP.NET Core code generator tool scaffolds ASP.NET Core projects. monikerRange: '>= aspnetcore-2.1' ms.author: tdykstra -ms.date: 07/05/2024 +ms.date: 11/09/2024 uid: fundamentals/tools/dotnet-aspnet-codegenerator --- # ASP.NET Core code generator tool (`aspnet-codegenerator`) diff --git a/aspnetcore/fundamentals/troubleshoot-aspnet-core-localization.md b/aspnetcore/fundamentals/troubleshoot-aspnet-core-localization.md index 11434c20d0d4..1bdcb9f12911 100644 --- a/aspnetcore/fundamentals/troubleshoot-aspnet-core-localization.md +++ b/aspnetcore/fundamentals/troubleshoot-aspnet-core-localization.md @@ -3,7 +3,7 @@ title: Troubleshoot ASP.NET Core localization author: hishamco description: Learn how to diagnose problems with localization in ASP.NET Core apps. ms.author: riande -ms.date: 01/24/2019 +ms.date: 05/03/2024 uid: fundamentals/troubleshoot-aspnet-core-localization --- # Troubleshoot ASP.NET Core localization diff --git a/aspnetcore/fundamentals/use-http-context.md b/aspnetcore/fundamentals/use-http-context.md index 6ca6c5c57305..2ed8df29e5bd 100644 --- a/aspnetcore/fundamentals/use-http-context.md +++ b/aspnetcore/fundamentals/use-http-context.md @@ -4,7 +4,7 @@ author: jamesnk description: How to use HttpContext in ASP.NET Core. monikerRange: '>= aspnetcore-3.1' ms.author: wpickett -ms.date: 12/13/2024 +ms.date: 12/18/2024 uid: fundamentals/use-httpcontext --- diff --git a/aspnetcore/fundamentals/websockets.md b/aspnetcore/fundamentals/websockets.md index 55183ccd12b9..aa8ec487a7a2 100644 --- a/aspnetcore/fundamentals/websockets.md +++ b/aspnetcore/fundamentals/websockets.md @@ -5,7 +5,7 @@ description: Learn how to get started with WebSockets in ASP.NET Core. monikerRange: '>= aspnetcore-3.1' ms.author: wpickett ms.custom: mvc -ms.date: 04/23/2024 +ms.date: 05/08/2025 uid: fundamentals/websockets --- # WebSockets support in ASP.NET Core diff --git a/aspnetcore/introduction-to-aspnet-core.md b/aspnetcore/introduction-to-aspnet-core.md index 27ff686ee27b..7556021c4c12 100644 --- a/aspnetcore/introduction-to-aspnet-core.md +++ b/aspnetcore/introduction-to-aspnet-core.md @@ -4,7 +4,7 @@ author: tdykstra description: Get an overview of ASP.NET Core, a cross-platform, high-performance, open-source framework for building modern, cloud-enabled, Internet-connected apps. ms.author: tdykstra ms.custom: mvc -ms.date: 04/21/2025 +ms.date: 06/21/2025 uid: index --- # Overview of ASP.NET Core From cdab617afbb05e669456389df143f94c5adfdaf1 Mon Sep 17 00:00:00 2001 From: Wade Pickett Date: Wed, 9 Jul 2025 15:05:05 -0700 Subject: [PATCH 02/13] Update aspnetcore/client-side/spa/angular.md Update date to today for client-side/spa/angular.md per review feedback --- aspnetcore/client-side/spa/angular.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aspnetcore/client-side/spa/angular.md b/aspnetcore/client-side/spa/angular.md index 1dcf49cac5b1..a533a965c4bb 100644 --- a/aspnetcore/client-side/spa/angular.md +++ b/aspnetcore/client-side/spa/angular.md @@ -5,7 +5,7 @@ description: Learn how to get started with the ASP.NET Core Single Page Applicat monikerRange: '>= aspnetcore-3.1' ms.author: stevesa ms.custom: mvc -ms.date: 09/29/2023 +ms.date: 07/09/2025 uid: spa/angular --- # Use the Angular project template with ASP.NET Core From 4cba48bcbdc0e5869c71c9477852f7e1e278cdf4 Mon Sep 17 00:00:00 2001 From: Wade Pickett Date: Wed, 9 Jul 2025 15:57:37 -0700 Subject: [PATCH 03/13] Apply suggestions from code review --- aspnetcore/fundamentals/minimal-apis/parameter-binding.md | 2 +- aspnetcore/fundamentals/minimal-apis/webapplication.md | 2 +- aspnetcore/fundamentals/openapi/aspnetcore-openapi.md | 2 +- aspnetcore/fundamentals/openapi/openapi-tools.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/aspnetcore/fundamentals/minimal-apis/parameter-binding.md b/aspnetcore/fundamentals/minimal-apis/parameter-binding.md index 95ec590ce429..7f6ee4a329bc 100644 --- a/aspnetcore/fundamentals/minimal-apis/parameter-binding.md +++ b/aspnetcore/fundamentals/minimal-apis/parameter-binding.md @@ -4,7 +4,7 @@ author: wadepickett description: Learn how parameters are populated before invoking minimal route handlers. ms.author: wpickett monikerRange: '>= aspnetcore-7.0' -ms.date: 05/18/2025 +ms.date: 07/09/2025 uid: fundamentals/minimal-apis/parameter-binding --- diff --git a/aspnetcore/fundamentals/minimal-apis/webapplication.md b/aspnetcore/fundamentals/minimal-apis/webapplication.md index 7e76d46cca91..d986257449be 100644 --- a/aspnetcore/fundamentals/minimal-apis/webapplication.md +++ b/aspnetcore/fundamentals/minimal-apis/webapplication.md @@ -4,7 +4,7 @@ author: wadepickett description: Learn about how to use WebApplication and WebApplicationBuilder. ms.author: wpickett monikerRange: '>= aspnetcore-7.0' -ms.date: 05/18/2025 +ms.date: 07/09/2025 uid: fundamentals/minimal-apis/webapplication --- diff --git a/aspnetcore/fundamentals/openapi/aspnetcore-openapi.md b/aspnetcore/fundamentals/openapi/aspnetcore-openapi.md index cf83734e57ce..28ad14c4768a 100644 --- a/aspnetcore/fundamentals/openapi/aspnetcore-openapi.md +++ b/aspnetcore/fundamentals/openapi/aspnetcore-openapi.md @@ -5,7 +5,7 @@ description: Learn how to generate and customize OpenAPI documents in an ASP.NET ms.author: safia monikerRange: '>= aspnetcore-6.0' ms.custom: mvc -ms.date: 04/19/2025 +ms.date: 07/09/2025 uid: fundamentals/openapi/aspnetcore-openapi --- # Generate OpenAPI documents diff --git a/aspnetcore/fundamentals/openapi/openapi-tools.md b/aspnetcore/fundamentals/openapi/openapi-tools.md index ab9d3c3004e0..026e66eb107f 100644 --- a/aspnetcore/fundamentals/openapi/openapi-tools.md +++ b/aspnetcore/fundamentals/openapi/openapi-tools.md @@ -4,7 +4,7 @@ author: ryanbrandenburg description: Demonstrates how to use the 'Microsoft.dotnet-openapi' tool to add references to OpenAPI files. monikerRange: '>= aspnetcore-3.1' ms.author: wpickett -ms.date: 08/06/2024 +ms.date: 07/09/2025 uid: fundamentals/openapi/openapi-tools --- # .NET OpenAPI tool command reference and installation From de2aef0307bb16178a90254328bd0f71236b9838 Mon Sep 17 00:00:00 2001 From: Wade Pickett Date: Wed, 9 Jul 2025 15:59:22 -0700 Subject: [PATCH 04/13] Apply suggestions from code review --- aspnetcore/fundamentals/openapi/customize-openapi.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aspnetcore/fundamentals/openapi/customize-openapi.md b/aspnetcore/fundamentals/openapi/customize-openapi.md index 1e0d0fc8fdba..7866e4c47686 100644 --- a/aspnetcore/fundamentals/openapi/customize-openapi.md +++ b/aspnetcore/fundamentals/openapi/customize-openapi.md @@ -5,7 +5,7 @@ description: Learn how to customize OpenAPI documents in an ASP.NET Core app ms.author: safia monikerRange: '>= aspnetcore-9.0' ms.custom: mvc -ms.date: 05/17/2025 +ms.date: 07/09/2025 uid: fundamentals/openapi/customize-openapi --- # Customize OpenAPI documents From dd3a90e8c5d127e75cff44b13fe5d30a95039a13 Mon Sep 17 00:00:00 2001 From: Wade Pickett Date: Wed, 9 Jul 2025 16:39:44 -0700 Subject: [PATCH 05/13] Apply suggestions from code review --- aspnetcore/fundamentals/portable-object-localization.md | 2 +- aspnetcore/fundamentals/use-http-context.md | 2 +- aspnetcore/fundamentals/websockets.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aspnetcore/fundamentals/portable-object-localization.md b/aspnetcore/fundamentals/portable-object-localization.md index 37bbda6adf79..ad7afb2ef275 100644 --- a/aspnetcore/fundamentals/portable-object-localization.md +++ b/aspnetcore/fundamentals/portable-object-localization.md @@ -3,7 +3,7 @@ title: Configure portable object localization in ASP.NET Core author: sebastienros description: This article introduces Portable Object files and outlines steps for using them in an ASP.NET Core application with the Orchard Core framework. ms.author: wpickett -ms.date: 04/06/2025 +ms.date: 07/09/2025 uid: fundamentals/portable-object-localization --- # Configure portable object localization in ASP.NET Core diff --git a/aspnetcore/fundamentals/use-http-context.md b/aspnetcore/fundamentals/use-http-context.md index 2ed8df29e5bd..286bab7016fe 100644 --- a/aspnetcore/fundamentals/use-http-context.md +++ b/aspnetcore/fundamentals/use-http-context.md @@ -4,7 +4,7 @@ author: jamesnk description: How to use HttpContext in ASP.NET Core. monikerRange: '>= aspnetcore-3.1' ms.author: wpickett -ms.date: 12/18/2024 +ms.date: 07/09/2025 uid: fundamentals/use-httpcontext --- diff --git a/aspnetcore/fundamentals/websockets.md b/aspnetcore/fundamentals/websockets.md index aa8ec487a7a2..f564db4d49b6 100644 --- a/aspnetcore/fundamentals/websockets.md +++ b/aspnetcore/fundamentals/websockets.md @@ -5,7 +5,7 @@ description: Learn how to get started with WebSockets in ASP.NET Core. monikerRange: '>= aspnetcore-3.1' ms.author: wpickett ms.custom: mvc -ms.date: 05/08/2025 +ms.date: 07/09/2025 uid: fundamentals/websockets --- # WebSockets support in ASP.NET Core From 9a3bfa4275f59864594ceecc5ab2e670def6809e Mon Sep 17 00:00:00 2001 From: Luke Latham <1622880+guardrex@users.noreply.github.com> Date: Thu, 10 Jul 2025 10:52:14 -0400 Subject: [PATCH 06/13] Surface section until .NET 11 (#35736) --- aspnetcore/blazor/components/quickgrid.md | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/aspnetcore/blazor/components/quickgrid.md b/aspnetcore/blazor/components/quickgrid.md index e2106ec1d3b2..59b999af5aae 100644 --- a/aspnetcore/blazor/components/quickgrid.md +++ b/aspnetcore/blazor/components/quickgrid.md @@ -602,10 +602,9 @@ dotnet aspnet-codegenerator blazor -h For an example use of the QuickGrid scaffolder, see . - - -:::moniker range="< aspnetcore-10.0" + ## Multiple concurrent EF Core queries trigger `System.InvalidOperationException` @@ -690,5 +689,3 @@ Consider the following example, which is based on the movie database `Index` com } } ``` - -:::moniker-end From 9ccf5a421eaf4f9d8b88ff90dc71cbcd416de7aa Mon Sep 17 00:00:00 2001 From: Tom Dykstra Date: Thu, 10 Jul 2025 10:06:16 -0700 Subject: [PATCH 07/13] Memory eviction - WN 10 P6 (#35676) --- aspnetcore/release-notes/aspnetcore-10.0.md | 2 + .../aspnetcore-10/includes/memory-eviction.md | 66 +++++++++++++++++++ .../release-notes/sample/MemoryEviction.cs | 0 3 files changed, 68 insertions(+) create mode 100644 aspnetcore/release-notes/aspnetcore-10/includes/memory-eviction.md create mode 100644 aspnetcore/release-notes/sample/MemoryEviction.cs diff --git a/aspnetcore/release-notes/aspnetcore-10.0.md b/aspnetcore/release-notes/aspnetcore-10.0.md index 965ffcc348f1..c5ea7185a816 100644 --- a/aspnetcore/release-notes/aspnetcore-10.0.md +++ b/aspnetcore/release-notes/aspnetcore-10.0.md @@ -88,6 +88,8 @@ For more information, see [ASP.NET Core Authorization and Authentication metrics This section describes miscellaneous new features in .NET 10. +[!INCLUDE[](~/release-notes/aspnetcore-10/includes/memory-eviction.md)] + [!INCLUDE[](~/release-notes/aspnetcore-10/includes/httpsys.md)] [!INCLUDE[](~/release-notes/aspnetcore-10/includes/testAppsTopLevel.md)] diff --git a/aspnetcore/release-notes/aspnetcore-10/includes/memory-eviction.md b/aspnetcore/release-notes/aspnetcore-10/includes/memory-eviction.md new file mode 100644 index 000000000000..a00a418cfb08 --- /dev/null +++ b/aspnetcore/release-notes/aspnetcore-10/includes/memory-eviction.md @@ -0,0 +1,66 @@ +### Automatic eviction from memory pool + +The memory pools used by Kestrel, IIS, and HTTP.sys now automatically evict memory blocks when the application is idle or under less load. The feature runs automatically and doesn't need to be enabled or configured manually. + +#### Why memory eviction matters + +Previously, memory allocated by the pool would remain reserved, even when not in use. This feature releases memory back to the system when the app is idle for a period of time. This eviction reduces overall memory usage and helps applications stay responsive under varying workloads. + +#### Use memory eviction metrics + +Metrics have been added to the default memory pool used by our server implementations. The new metrics are under the name `"Microsoft.AspNetCore.MemoryPool"`. + +For information about metrics and how to use them, see . + +#### Manage memory pools + +Besides using memory pools more efficiently by evicting unneeded memory blocks, .NET 10 improves the experience of creating memory pools. It does this by providing a built-in [IMemoryPoolFactory](https://source.dot.net/#Microsoft.AspNetCore.Connections.Abstractions/IMemoryPoolFactory.cs) and a `MemoryPoolFactory` implementation. It makes the implementation available to your application through dependency injection. + +The following code example shows a simple background service that uses the built-in memory pool factory implementation to create memory pools. These pools benefit from the automatic eviction feature: + +```csharp +public class MyBackgroundService : BackgroundService +{ + private readonly MemoryPool _memoryPool; + + public MyBackgroundService(IMemoryPoolFactory factory) + { + _memoryPool = factory.Create(); + } + + protected override async Task ExecuteAsync(CancellationToken stoppingToken) + { + while (!stoppingToken.IsCancellationRequested) + { + try + { + await Task.Delay(20, stoppingToken); + // do work that needs memory + var rented = _memoryPool.Rent(100); + rented.Dispose(); + } + catch (OperationCanceledException) + { + return; + } + } + } +} +``` + +To use your own memory pool factory, make a class that implements `IMemoryPoolFactory` and register it with dependency injection, as the following example does. Memory pools created this way also benefit from the automatic eviction feature: + +```csharp +services.AddSingleton, +CustomMemoryPoolFactory>(); + +public class CustomMemoryPoolFactory : IMemoryPoolFactory +{ + public MemoryPool Create() + { + // Return a custom MemoryPool implementation + // or the default, as is shown here. + return MemoryPool.Shared; + } +} +``` diff --git a/aspnetcore/release-notes/sample/MemoryEviction.cs b/aspnetcore/release-notes/sample/MemoryEviction.cs new file mode 100644 index 000000000000..e69de29bb2d1 From 57254e87b7eb06f1fecd00028f45f621f0eaf34f Mon Sep 17 00:00:00 2001 From: Ahmed Fwela <63286031+ahmednfwela@users.noreply.github.com> Date: Fri, 11 Jul 2025 03:41:27 +0300 Subject: [PATCH 08/13] docs: Add `Grpc-Status-Details-Bin` to exposed headers in grpcweb docs (#35733) --- aspnetcore/grpc/grpcweb.md | 2 +- .../grpcweb/sample/8.x/GrpcGreeter/Program.cs | 15 +++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/aspnetcore/grpc/grpcweb.md b/aspnetcore/grpc/grpcweb.md index 52da4c0e3a17..5831df53e128 100644 --- a/aspnetcore/grpc/grpcweb.md +++ b/aspnetcore/grpc/grpcweb.md @@ -4,7 +4,7 @@ author: jamesnk description: Learn how to configure gRPC services on ASP.NET Core to be callable from browser apps using gRPC-Web. monikerRange: '>= aspnetcore-3.0' ms.author: wpickett -ms.date: 04/29/2025 +ms.date: 07/10/2025 uid: grpc/grpcweb --- # gRPC-Web in ASP.NET Core gRPC apps diff --git a/aspnetcore/grpc/grpcweb/sample/8.x/GrpcGreeter/Program.cs b/aspnetcore/grpc/grpcweb/sample/8.x/GrpcGreeter/Program.cs index be494a3dbff7..7c14dfd6a5e0 100644 --- a/aspnetcore/grpc/grpcweb/sample/8.x/GrpcGreeter/Program.cs +++ b/aspnetcore/grpc/grpcweb/sample/8.x/GrpcGreeter/Program.cs @@ -14,7 +14,8 @@ app.UseGrpcWeb(); app.MapGrpcService().EnableGrpcWeb(); -app.MapGet("/", () => "This gRPC service is gRPC-Web enabled and is callable from browser apps using the gRPC-Web protocol"); +app.MapGet("/", () => "This gRPC service is gRPC-Web enabled and is " + + "callable from browser apps using the gRPC-Web protocol"); app.Run(); // @@ -34,7 +35,9 @@ app.UseGrpcWeb(new GrpcWebOptions { DefaultEnabled = true }); app.MapGrpcService(); -app.MapGet("/", () => "All gRPC service are supported by default in this example, and are callable from browser apps using the gRPC-Web protocol"); +app.MapGet("/", () => "All gRPC service are supported by default in " + + "this example, and are callable from browser apps using the " + + "gRPC-Web protocol"); app.Run(); // @@ -53,7 +56,9 @@ builder.AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader() - .WithExposedHeaders("Grpc-Status", "Grpc-Message", "Grpc-Encoding", "Grpc-Accept-Encoding"); + .WithExposedHeaders("Grpc-Status", "Grpc-Message", + "Grpc-Encoding", "Grpc-Accept-Encoding", + "Grpc-Status-Details-Bin"); })); var app = builder.Build(); @@ -64,7 +69,9 @@ app.MapGrpcService().EnableGrpcWeb() .RequireCors("AllowAll"); -app.MapGet("/", () => "This gRPC service is gRPC-Web enabled, CORS enabled, and is callable from browser apps using the gRPC-Web protocol"); +app.MapGet("/", () => "This gRPC service is gRPC-Web enabled, CORS " + + "enabled, and is callable from browser apps using the gRPC-Web " + + "protocol"); app.Run(); // From 360d5eff32e87c16c065255256d30a66b49e7f86 Mon Sep 17 00:00:00 2001 From: Luke Latham <1622880+guardrex@users.noreply.github.com> Date: Fri, 11 Jul 2025 10:49:21 -0400 Subject: [PATCH 09/13] Patch code example (#35746) --- aspnetcore/blazor/progressive-web-app/push-notifications.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aspnetcore/blazor/progressive-web-app/push-notifications.md b/aspnetcore/blazor/progressive-web-app/push-notifications.md index b66c50b297e5..53fd3672a3d8 100644 --- a/aspnetcore/blazor/progressive-web-app/push-notifications.md +++ b/aspnetcore/blazor/progressive-web-app/push-notifications.md @@ -160,7 +160,7 @@ app.MapPut("/notifications/subscribe", // Store the new subscription subscription.UserId = userId; - db.NotificationSubscriptions.Attach(subscription); + db.NotificationSubscriptions.Add(subscription); await db.SaveChangesAsync(); From 7319ebbc5cfb5b462d205d23970fc0d68ad0d36a Mon Sep 17 00:00:00 2001 From: Pavel Savara Date: Tue, 15 Jul 2025 12:26:30 +0200 Subject: [PATCH 10/13] [Pre6] Better EP docs with new names (#35577) --- ...bly-browser-developer-tools-diagnostics.md | 2 + .../webassembly-event-pipe-diagnostics.md | 156 +++++++++++------- 2 files changed, 96 insertions(+), 62 deletions(-) diff --git a/aspnetcore/blazor/performance/webassembly-browser-developer-tools-diagnostics.md b/aspnetcore/blazor/performance/webassembly-browser-developer-tools-diagnostics.md index ccf9df2c5b73..317c5033f856 100644 --- a/aspnetcore/blazor/performance/webassembly-browser-developer-tools-diagnostics.md +++ b/aspnetcore/blazor/performance/webassembly-browser-developer-tools-diagnostics.md @@ -54,6 +54,8 @@ In the app's project file (`.csproj`): browser; false true + + 0 ``` diff --git a/aspnetcore/blazor/performance/webassembly-event-pipe-diagnostics.md b/aspnetcore/blazor/performance/webassembly-event-pipe-diagnostics.md index 6c9e653c48a4..16b2e2a374a4 100644 --- a/aspnetcore/blazor/performance/webassembly-event-pipe-diagnostics.md +++ b/aspnetcore/blazor/performance/webassembly-event-pipe-diagnostics.md @@ -5,7 +5,7 @@ description: Learn about Event Pipe diagnostics and how to get a Garbage Collect monikerRange: '>= aspnetcore-10.0' ms.author: wpickett ms.custom: mvc -ms.date: 05/02/2025 +ms.date: 06/04/2025 uid: blazor/performance/webassembly-event-pipe --- # ASP.NET Core Blazor WebAssembly Event Pipe diagnostics @@ -16,9 +16,9 @@ uid: blazor/performance/webassembly-event-pipe --> -This article describes Event Pipe diagnostic tools, counters, and how to get a Garbage Collector heap dump in Blazor WebAssembly apps. +This article describes diagnostic tools and how to use them in Blazor WebAssembly apps. -## Prerequisite +## Prerequisite for all scenarios Install the [.NET WebAssembly build tools](xref:blazor/tooling/webassembly#net-webassembly-build-tools): @@ -26,106 +26,138 @@ Install the [.NET WebAssembly build tools](xref:blazor/tooling/webassembly#net-w dotnet workload install wasm-tools ``` -## .NET Core Diagnostics Client Library example +## How a WebAssembly app uses memory and how to troubleshoot memory leaks -Parse and validate NetTrace (`.nettrace`) messages using the .NET Core Diagnostics Client Library: +In the app's project file (`.csproj`), add following properties for the duration of the investigation: -* [`dotnet/diagnostics` GitHub repository](https://github.com/dotnet/diagnostics) -* [`Microsoft.Diagnostics.NETCore.Client` NuGet package](https://www.nuget.org/packages/Microsoft.Diagnostics.NETCore.Client) +```xml + + + true + +``` -For more information, see the [.NET Core diagnostics documentation](/dotnet/core/diagnostics/) and the [`IpcMessage` API (reference source)](https://github.com/dotnet/diagnostics/blob/main/src/Microsoft.Diagnostics.NETCore.Client/DiagnosticsIpc/IpcMessage.cs). +> [!WARNING] +> Don't enable diagnostics in production because it has a negative performance impact. -[!INCLUDE[](~/includes/aspnetcore-repo-ref-source-links.md)] +Build your app with the `wasm-tools` workload. -The MSBuild properties in the following table enable profiler integration. +Open the app in a browser and navigate to problematic pages or components. -Property | Default | Set value to… | Description ---- | :---: | :---: | --- -`` | `false` | `true` | Enables support for WebAssembly performance tracing. -`` | No value | See table† | Enables instrumentation necessary for the sampling profiler. The property follows the :::no-loc text="callspec"::: syntax. †For permissible values, see the following table. -`` | `false` | `true` | Enables `System.Diagnostics.Metrics` support. For more information, see the [`System.Diagnostics.Metrics` namespace](/dotnet/api/system.diagnostics.metrics). -`` | `false`| `true` | Enables `EventPipe` support. For more information, see [Diagnostics and instrumentation: Observability and telemetry](/dotnet/core/deploying/native-aot/diagnostics#observability-and-telemetry). +Take a managed memory dump by calling `collectGcDump` JavaScript API: -The following table describes permissable `` values. +```javascript +globalThis.getDotnetRuntime(0).collectGcDump(); +``` -`` value | Description ---- | --- -`all` | All assemblies -`program` | Entry point assembly -`{ASSEMBLY}` | Specifies an assembly (`{ASSEMBLY}`) -`M:Type:{METHOD}` | Specifies a method (`{METHOD}`) -`N:{NAMESPACE}` | Specifies a namespace (`{NAMESPACE}`) -`T:{TYPE}` | Specifies a type (`{TYPE}`) -`+EXPR` | Includes expression -`-EXPR` | Excludes expression +Call the preceding API from either a browser devoloper tools console or JavaScript code of the app. + +A `.nettrace` file is downloaded from the browser into a local folder. + +Convert the dump to `.gcdump` format using the `dotnet-gcdump` tool. To view the converted `.gcdump` file, use Visual Studio or PrefView. + +For more information, see [View the GC dump captured from dotnet-gcdump](/dotnet/core/diagnostics/dotnet-gcdump#view-the-gc-dump-captured-from-dotnet-gcdump). -Enabling profilers has negative size and performance impacts, so don't publish an app for production with profilers enabled. In the following example, a condition is set on a property group section that only enables profiling when the app is built with `/p:BlazorSampleProfilingEnabled=true` (.NET CLI) or `true` in a Visual Studio publish profile, where "`BlazorSampleProfilingEnabled`" is a custom symbol name that you choose and doesn't conflict with other symbol names. +## How a WebAssembly app uses CPU and how to find slow or hot methods -In the app's project file (`.csproj`): +In the app's project file (`.csproj`), add following properties for the duration of the investigation: ```xml - - true - true - true + + + true + + 0 + + all ``` -Alternatively, enable features when the app is built with the .NET CLI. The following options passed to the `dotnet build` command mirror the preceding MS Build property configuration: +> [!WARNING] +> Don't enable diagnostics in production because it has a negative performance impact. -```dotnetcli -/p:WasmPerfTracing=true /p:WasmPerfInstrumentation=all /p:MetricsSupport=true /p:EventSourceSupport=true +Build the app with the `wasm-tools` workload. + +Open the app in a browser and navigate to problematic pages or components. + +Start colllecting CPU samples for 60 seconds by calling the `collectCpuSamples` JavaScript API: + +```javascript +globalThis.getDotnetRuntime(0).collectCpuSamples({durationSeconds: 60}); ``` -The [`Timing-Allow-Origin` HTTP header](https://developer.mozilla.org/docs/Web/HTTP/Reference/Headers/Timing-Allow-Origin) allows for more precise time measurements. +Call the preceding API from either a browser devoloper tools console or JavaScript code of the app. -## EventPipe profiler +Start using the app to run problematic code. -[EventPipe](/dotnet/core/diagnostics/eventpipe) is a runtime component used to collect tracing data, similar to [ETW](/windows/win32/etw/event-tracing-portal) and [perf_events](https://wikipedia.org/wiki/Perf_%28Linux%29). +After the predefined period, the browser downloads a `.nettrace` file into a local folder. To view the `.nettrace` file, use Visual Studio or PrefView. -Use the `` property to enable CPU sampling instrumentation for diagnostic server. This setting isn't necessary for memory dump or counters. **Makes the app execute slower. Only enable this for performance profiling.** +For more information, see [Use EventPipe to trace your .NET application](/dotnet/core/diagnostics/eventpipe#use-eventpipe-to-trace-your-net-application). -Enabling profilers has negative size and performance impact, so don't publish an app for production with profilers enabled. In the following example, a condition is set on a property group section that only enables profiling when the app is built with `/p:BlazorSampleProfilingEnabled=true` (.NET CLI) or `true` in a Visual Studio publish profile, where "`BlazorSampleProfilingEnabled`" is a custom symbol name that you choose and doesn't conflict with other symbol names. +The [`Timing-Allow-Origin` HTTP header](https://developer.mozilla.org/docs/Web/HTTP/Reference/Headers/Timing-Allow-Origin) allows for more precise time measurements. -```xml - - all - -``` +## How to observe metrics emmited by a WebAssembly app -Collect CPU counters for 60 seconds with `collectCpuSamples(durationSeconds)`: +In the app's project file (`.csproj`), add following properties for the duration of the investigation: -```javascript -globalThis.getDotnetRuntime(0).collectCpuSamples({durationSeconds: 60}); +```xml + + + true + true + true + ``` -To view the trace, see [Use EventPipe to trace your .NET application](/dotnet/core/diagnostics/eventpipe#use-eventpipe-to-trace-your-net-application). +> [!WARNING] +> Don't enable diagnostics in production because it has a negative performance impact. -## GC (Garbage Collector) dumps +Build the app with the `wasm-tools` workload. -The [`dotnet-gcdump` (`collect`/convert` options)](/dotnet/core/diagnostics/dotnet-gcdump) global tool collects GC (Garbage Collector) dumps of live .NET processes using [EventPipe](/dotnet/core/diagnostics/eventpipe). +Open the app in a browser and navigate to problematic pages or components. -Collect a GC (Garbage Collector) dump of the live .NET process with `collectGcDump`: +Start colllecting metrics for 60 seconds by calling the `collectMetrics` JavaScript API: ```javascript -globalThis.getDotnetRuntime(0).collectGcDump(); +globalThis.getDotnetRuntime(0).collectMetrics({durationSeconds: 60}); ``` -To view the captured GC dump, see [View the GC dump captured from dotnet-gcdump](/dotnet/core/diagnostics/dotnet-gcdump#view-the-gc-dump-captured-from-dotnet-gcdump). +Call the preceding API from either a browser devoloper tools console or JavaScript code of the app. -## Counters trace +After the predefined period, the browser downloads a `.nettrace` file into a local folder. To view the `.nettrace` file, use Visual Studio or PrefView. -[`dotnet-counters collect`](/dotnet/core/diagnostics/dotnet-counters) is a performance monitoring tool for ad-hoc health monitoring and first-level performance investigation. +For more information, see [Use EventPipe to trace your .NET application](/dotnet/core/diagnostics/eventpipe#use-eventpipe-to-trace-your-net-application). -Collect diagnostic counters for 60 seconds with `collectPerfCounters(durationSeconds)`: +## MSBuild properties that enable diagnostic integration -```javascript -globalThis.getDotnetRuntime(0).collectPerfCounters({durationSeconds: 60}); -``` +Property | Default | Set value to… | Description +--- | :---: | :---: | --- +`` | `false` | `true` | Enables support for WebAssembly performance tracing. +`` | No value | See table† | Enables instrumentation necessary for the sampling profiler. The property follows the :::no-loc text="callspec"::: syntax. †For permissible values, see the following table. +`` | `false` | `true` | Enables `System.Diagnostics.Metrics` support. For more information, see the [`System.Diagnostics.Metrics` namespace](/dotnet/api/system.diagnostics.metrics). +`` | `false`| `true` | Enables `EventPipe` support. For more information, see [Diagnostics and instrumentation: Observability and telemetry](/dotnet/core/deploying/native-aot/diagnostics#observability-and-telemetry). + +The following table describes permissable `` values. + +`` value | Description +--- | --- +`all` | All assemblies +`program` | Entry point assembly +`{ASSEMBLY}` | Specifies an assembly (`{ASSEMBLY}`) +`M:Type:{METHOD}` | Specifies a method (`{METHOD}`) +`N:{NAMESPACE}` | Specifies a namespace (`{NAMESPACE}`) +`T:{TYPE}` | Specifies a type (`{TYPE}`) +`+EXPR` | Includes expression +`-EXPR` | Excludes expression + +Your code should yield to main browser loop often to allow the trace to be collected. When executing long running loops, the internal diagnostic buffers could overflow. -To view the trace, see [Use EventPipe to trace your .NET application](/dotnet/core/diagnostics/eventpipe#use-eventpipe-to-trace-your-net-application). +**Enabling profilers and diagnostic tools has negative size and performance impacts, so don't publish an app for production with profilers enabled.** ## Additional resources +* [EventPipe](/dotnet/core/diagnostics/eventpipe) is a runtime component used to collect tracing data, similar to [ETW](/windows/win32/etw/event-tracing-portal) and [perf_events](https://wikipedia.org/wiki/Perf_%28Linux%29). * [What diagnostic tools are available in .NET Core?](/dotnet/core/diagnostics/) * [.NET diagnostic tools](/dotnet/core/diagnostics/tools-overview) +* [`dotnet/diagnostics` GitHub repository](https://github.com/dotnet/diagnostics) +* [`Microsoft.Diagnostics.NETCore.Client` NuGet package](https://www.nuget.org/packages/Microsoft.Diagnostics.NETCore.Client) From b0cf7bcd70b435263106c381d5730dff57f444e0 Mon Sep 17 00:00:00 2001 From: Luke Latham <1622880+guardrex@users.noreply.github.com> Date: Tue, 15 Jul 2025 06:43:11 -0400 Subject: [PATCH 11/13] [Pre6] Blazor Preview 6 updates (#35698) --- aspnetcore/blazor/components/prerender.md | 5 +- aspnetcore/blazor/components/rendering.md | 26 ++ aspnetcore/blazor/forms/validation.md | 98 +++++- aspnetcore/blazor/fundamentals/routing.md | 29 +- aspnetcore/blazor/host-and-deploy/index.md | 34 ++ .../blazor/host-and-deploy/server/index.md | 17 + .../webassembly/azure-static-web-apps.md | 2 +- ...le-caching-and-integrity-check-failures.md | 39 ++- .../webassembly/http-caching-issues.md | 4 + aspnetcore/blazor/performance/index.md | 64 ++-- ...bly-browser-developer-tools-diagnostics.md | 2 +- aspnetcore/blazor/security/index.md | 2 +- aspnetcore/blazor/state-management.md | 6 +- .../blazor/webassembly-native-dependencies.md | 2 +- aspnetcore/client-side/using-grunt.md | 12 +- aspnetcore/log-mon/metrics/built-in.md | 33 +- aspnetcore/release-notes/aspnetcore-10.0.md | 2 +- .../aspnetcore-10/includes/blazor.md | 308 +++++++++++++++++- aspnetcore/security/app-secrets.md | 2 +- .../security/authentication/azure-ad-b2c.md | 4 +- 20 files changed, 618 insertions(+), 73 deletions(-) diff --git a/aspnetcore/blazor/components/prerender.md b/aspnetcore/blazor/components/prerender.md index 06732f2de0e4..dbd31cbf94d4 100644 --- a/aspnetcore/blazor/components/prerender.md +++ b/aspnetcore/blazor/components/prerender.md @@ -202,7 +202,7 @@ In the following example that serializes state for multiple components of the sa In the following example that serializes state for a dependency injection service: * Properties annotated with the `[SupplyParameterFromPersistentComponentState]` attribute are serialized during prerendering and deserialized when the app becomes interactive. -* The `AddPersistentService` method is used to register the service for persistence. The render mode is required because the render mode can't be inferred from the service type. Use any of the following values: +* The extension method is used to register the service for persistence. The render mode is required because the render mode can't be inferred from the service type. Use any of the following values: * `RenderMode.Server`: The service is available for the Interactive Server render mode. * `RenderMode.Webassembly`: The service is available for the Interactive Webassembly render mode. * `RenderMode.InteractiveAuto`: The service is available for both the Interactive Server and Interactive Webassembly render modes if a component renders in either of those modes. @@ -231,7 +231,8 @@ public class CounterService In `Program.cs`: ```csharp -builder.Services.AddPersistentService(RenderMode.InteractiveAuto); +builder.Services.RegisterPersistentService( + RenderMode.InteractiveAuto); ``` Serialized properties are identified from the actual service instance: diff --git a/aspnetcore/blazor/components/rendering.md b/aspnetcore/blazor/components/rendering.md index 756d63ca619d..95616c94a95d 100644 --- a/aspnetcore/blazor/components/rendering.md +++ b/aspnetcore/blazor/components/rendering.md @@ -53,6 +53,32 @@ Streaming rendering requires the server to avoid buffering the output. The respo To stream content updates when using static server-side rendering (static SSR) or prerendering, apply the [`[StreamRendering]` attribute](xref:Microsoft.AspNetCore.Components.StreamRenderingAttribute) in .NET 9 or later (use `[StreamRendering(true)]` in .NET 8) to the component. Streaming rendering must be explicitly enabled because streamed updates may cause content on the page to shift. Components without the attribute automatically adopt streaming rendering if the parent component uses the feature. Pass `false` to the attribute in a child component to disable the feature at that point and further down the component subtree. The attribute is functional when applied to components supplied by a [Razor class library](xref:blazor/components/class-libraries). +:::moniker-end + +:::moniker range=">= aspnetcore-10.0" + +If [enhanced navigation](xref:blazor/fundamentals/routing#enhanced-navigation-and-form-handling) is active, streaming rendering renders [Not Found responses](xref:blazor/fundamentals/routing#not-found-responses) without reloading the page. When enhanced navigation is blocked, the framework redirects to Not Found content with a page refresh. + +Streaming rendering can only render components that have a route, such as a [`NotFoundPage` assignment](xref:blazor/fundamentals/routing#not-found-responses) (`NotFoundPage="..."`) or a [Status Code Pages Re-execution Middleware page assignment](xref:fundamentals/error-handling#usestatuscodepageswithreexecute) (). The Not Found render fragment (`...`) and the `DefaultNotFound` 404 content ("`Not found`" plain text) don't have routes, so they can't be used during streaming rendering. + +Streaming `NavigationManager.NotFound` content rendering uses (in order): + +* A `NotFoundPage` passed to the `Router` component, if present. +* A Status Code Pages Re-execution Middleware page, if configured. +* No action if neither of the preceding approaches is adopted. + +Non-streaming `NavigationManager.NotFound` content rendering uses (in order): + +* A `NotFoundPage` passed to the `Router` component, if present. +* Not Found render fragment content, if present. *Not recommended in .NET 10 or later.* +* `DefaultNotFound` 404 content ("`Not found`" plain text). + +[Status Code Pages Re-execution Middleware](xref:fundamentals/error-handling#usestatuscodepageswithreexecute) with takes precedence for browser-based address routing problems, such as an incorrect URL typed into the browser's address bar or selecting a link that has no endpoint in the app. + +:::moniker-end + +:::moniker range=">= aspnetcore-8.0" + The following example is based on the `Weather` component in an app created from the [Blazor Web App project template](xref:blazor/project-structure#blazor-web-app). The call to simulates retrieving weather data asynchronously. The component initially renders placeholder content ("`Loading...`") without waiting for the asynchronous delay to complete. When the asynchronous delay completes and the weather data content is generated, the content is streamed to the response and patched into the weather forecast table. `Weather.razor`: diff --git a/aspnetcore/blazor/forms/validation.md b/aspnetcore/blazor/forms/validation.md index d7afa0977288..bc055d2ad2cd 100644 --- a/aspnetcore/blazor/forms/validation.md +++ b/aspnetcore/blazor/forms/validation.md @@ -1557,12 +1557,108 @@ The doesn't work w :::moniker-end -## Nested models, collection types, and complex types +:::moniker range=">= aspnetcore-10.0" + +## Nested objects and collection types + +Blazor form validation includes support for validating properties of nested objects and collection items with the built-in . + +To create a validated form, use a component inside an component, just as before. + +To opt into the nested objects and collection types validation feature: + + + +1. Call the `AddValidation` extension method in the `Program` file where services are registered. +2. Declare the form model types in a C# class file, not in a Razor component (`.razor`). +3. Annotate the root form model type with the `[ValidatableType]` attribute. + +Without following the preceding steps, form validation behavior doesn't include nested model and collection type validation. + + + +The following example demonstrates customer orders with the improved form validation (details omitted for brevity): + +In `Program.cs`, call `AddValidation` on the service collection: + +```csharp +builder.Services.AddValidation(); +``` + +In the following `Order` class, the `[ValidatableType]` attribute is required on the top-level model type. The other types are discovered automatically. `OrderItem` and `ShippingAddress` aren't shown for brevity, but nested and collection validation works the same way in those types if they were shown. + +`Order.cs`: + +```csharp +[ValidatableType] +public class Order +{ + public Customer Customer { get; set; } = new(); + public List OrderItems { get; set; } = []; +} + +public class Customer +{ + [Required(ErrorMessage = "Name is required.")] + public string? FullName { get; set; } + + [Required(ErrorMessage = "Email is required.")] + public string? Email { get; set; } + + public ShippingAddress ShippingAddress { get; set; } = new(); +} +``` + +In the following `OrderPage` component, the component is present in the component. + +`OrderPage.razor`: + +```razor + + + +

Customer Details

+
+ + +
+ + // ... form continues ... +
+ +@code { + public Order? Model { get; set; } + + protected override void OnInitialized() => Model ??= new(); +} +``` + +The requirement to declare the model types outside of Razor components (`.razor` files) is due to the fact that both the new validation feature and the Razor compiler itself are using a source generator. Currently, output of one source generator can't be used as an input for another source generator. + +## Complex types + +Blazor provides support for validating form input using data annotations with the built-in . However, the only validates top-level properties of the model bound to the form that aren't complex-type properties. + +To validate the bound model's entire object graph, including complex-type properties, use the `ObjectGraphDataAnnotationsValidator` provided by the *experimental* [`Microsoft.AspNetCore.Components.DataAnnotations.Validation`](https://www.nuget.org/packages/Microsoft.AspNetCore.Components.DataAnnotations.Validation) package. + +> [!NOTE] +> The `ObjectGraphDataAnnotationsValidator` isn't compatible with [nested objects and collection types validation](#nested-objects-and-collection-types), but it's capable of validating nested objects and collection types on its own. + +:::moniker-end + +:::moniker range="< aspnetcore-10.0" + +## Nested objects, collection types, and complex types Blazor provides support for validating form input using data annotations with the built-in . However, the only validates top-level properties of the model bound to the form that aren't collection- or complex-type properties. To validate the bound model's entire object graph, including collection- and complex-type properties, use the `ObjectGraphDataAnnotationsValidator` provided by the *experimental* [`Microsoft.AspNetCore.Components.DataAnnotations.Validation`](https://www.nuget.org/packages/Microsoft.AspNetCore.Components.DataAnnotations.Validation) package: +:::moniker-end + ```razor diff --git a/aspnetcore/blazor/fundamentals/routing.md b/aspnetcore/blazor/fundamentals/routing.md index 391bd075112c..39121f5273ac 100644 --- a/aspnetcore/blazor/fundamentals/routing.md +++ b/aspnetcore/blazor/fundamentals/routing.md @@ -708,14 +708,33 @@ For more information on component disposal, see -*In .NET 10 Preview 4, Not Found responses are only available for static SSR and global interactive rendering. Per-page/component rendering support is planned for Preview 5 in June, 2025.* - provides a `NotFound` method to handle scenarios where a requested resource isn't found during static server-side rendering (static SSR) or global interactive rendering: * **Static SSR**: Calling `NotFound` sets the HTTP status code to 404. -* **Streaming rendering**: Throws an exception if the response has already started. + * **Interactive rendering**: Signals the Blazor router ([`Router` component](xref:blazor/fundamentals/routing#route-templates)) to render Not Found content. +* **Streaming rendering**: If [enhanced navigation](xref:blazor/fundamentals/routing#enhanced-navigation-and-form-handling) is active, [streaming rendering](xref:blazor/components/rendering#streaming-rendering) renders Not Found content without reloading the page. When enhanced navigation is blocked, the framework redirects to Not Found content with a page refresh. + +> [!NOTE] +> The following discussion mentions that a Not Found Razor component can be assigned to the `Router` component's `NotFoundPage` parameter. The parameter works in concert with `NavigationManager.NotFound` and is described in more detail later in this section. + +Streaming rendering can only render components that have a route, such as a Not Found page assignment with the `Router` component's `NotFoundPage` parameter or a [Status Code Pages Re-execution Middleware page assignment](xref:fundamentals/error-handling#usestatuscodepageswithreexecute) (). The Not Found render fragment (`...`) and the `DefaultNotFound` 404 content ("`Not found`" plain text) don't have routes, so they can't be used during streaming rendering. + +Streaming `NavigationManager.NotFound` content rendering uses (in order): + +* A `NotFoundPage` passed to the `Router` component, if present. +* A Status Code Pages Re-execution Middleware page, if configured. +* No action if neither of the preceding approaches is adopted. + +Non-streaming `NavigationManager.NotFound` content rendering uses (in order): + +* A `NotFoundPage` passed to the `Router` component, if present. +* Not Found render fragment content, if present. *Not recommended in .NET 10 or later.* +* `DefaultNotFound` 404 content ("`Not found`" plain text). + +[Status Code Pages Re-execution Middleware](xref:fundamentals/error-handling#usestatuscodepageswithreexecute) with takes precedence for browser-based address routing problems, such as an incorrect URL typed into the browser's address bar or selecting a link that has no endpoint in the app. + When a component is rendered statically (static SSR) and `NavigationManager.NotFound` is called, the 404 status code is set on the response: ```razor @@ -743,7 +762,7 @@ To provide Not Found content for global interactive rendering, use a Not Found p

Sorry! Nothing to show.

``` -Assign the `NotFound` component to the router's `NotFoundPage` parameter. `NotFoundPage` supports routing that can be used across re-execution middleware, including non-Blazor middleware. If the `NotFound` render fragment is defined together with `NotFoundPage`, the page has higher priority. +Assign the `NotFound` component to the router's `NotFoundPage` parameter. `NotFoundPage` supports routing that can be used across Status Code Pages Re-execution Middleware, including non-Blazor middleware. If the `NotFound` render fragment (`...`) is defined together with `NotFoundPage`, the page has higher priority. In the following example, the preceding `NotFound` component is present in the app's `Pages` folder and passed to the `NotFoundPage` parameter: @@ -779,7 +798,7 @@ You can use the `OnNotFound` event for notifications when `NotFound` is invoked. + Re-execution Middleware. --> In the following example for components that adopt [interactive server-side rendering (interactive SSR)](xref:blazor/fundamentals/index#client-and-server-rendering-concepts), custom content is rendered depending on where `OnNotFound` is called. If the event is triggered by the following `Movie` component when a movie isn't found on component initialization, a custom message states that the requested movie isn't found. If the event is triggered by the `User` component, a different message states that the user isn't found. diff --git a/aspnetcore/blazor/host-and-deploy/index.md b/aspnetcore/blazor/host-and-deploy/index.md index 14b64641e491..25f391be609e 100644 --- a/aspnetcore/blazor/host-and-deploy/index.md +++ b/aspnetcore/blazor/host-and-deploy/index.md @@ -106,6 +106,40 @@ For more information on *solutions*, see true +``` + +> [!IMPORTANT] +> This feature only produces the bundler-friendly output when publishing the app. + +The output isn't directly runnable in the browser, but it can be consumed by JS tools to bundle JS files with the rest of the developer-supplied scripts. + +When `WasmBundlerFriendlyBootConfig` is enabled, the produced JS contains `import` directives for all of the assets in the app, which makes the dependencies visible for the bundler. Many of the assets aren't loadable by the browser, but bundlers usually can be configured to recognize the assets by their file type to handle loading. For details on how to configure your bundler, refer to the bundler's documentation. + +> [!NOTE] +> Bundling build output should be possible by mapping imports to individual file locations using a JS bundler custom plugin. We don't provide such a plugin at the moment. + +> [!NOTE] +> Replacing the `files` plugin with `url`, all of the app's JS files, including the Blazor-WebAssembly runtime (base64 encoded in the JS), are bundled into the output. The size of the file is significantly larger (for example, 300% larger) than when the files are curated with the `files` plugin, so we don't recommend using the `url` plugin as a general practice when producing bundler-friendly output for JS bundler processing. + +The following sample apps are based on [Rollup](https://rollupjs.org/). Similar concepts apply when using other JS bundlers. + +Demonstration sample apps: + +* [Blazor WASM in a React application (`maraf/blazor-wasm-react` GitHub repository)](https://github.com/maraf/blazor-wasm-react) +* [.NET on WASM in a React component sample (`maraf/dotnet-wasm-react` GitHub repository)](https://github.com/maraf/dotnet-wasm-react) + +:::moniker-end + ## Blazor Server `MapFallbackToPage` configuration *This section only applies to Blazor Server apps. isn't supported in Blazor Web Apps and Blazor WebAssembly apps.* diff --git a/aspnetcore/blazor/host-and-deploy/server/index.md b/aspnetcore/blazor/host-and-deploy/server/index.md index e39724e52efc..70135ea17c6b 100644 --- a/aspnetcore/blazor/host-and-deploy/server/index.md +++ b/aspnetcore/blazor/host-and-deploy/server/index.md @@ -40,6 +40,23 @@ For guidance on building secure and scalable server-side Blazor apps, see the fo Each circuit uses approximately 250 KB of memory for a minimal *Hello World*-style app. The size of a circuit depends on the app's code and the state maintenance requirements associated with each component. We recommend that you measure resource demands during development for your app and infrastructure, but the following baseline can be a starting point in planning your deployment target: If you expect your app to support 5,000 concurrent users, consider budgeting at least 1.3 GB of server memory to the app (or ~273 KB per user). +:::moniker range=">= aspnetcore-10.0" + +## Blazor WebAssembly static asset preloading + +The `LinkPreload` component in the `App` component's head content (`App.razor`) is used to reference Blazor static assets. The component is placed after the base URL tag (``): + +```razor + +``` + +A Razor component is used instead of `` elements because: + +* The component permits the base URL (`` tag's `href` attribute value) to correctly identify the root of the Blazor app within an ASP.NET Core app. +* The feature can be removed by removing the `LinkPreload` component tag from the `App` component. This is helpful in cases where the app is using a [`loadBootResource` callback](xref:blazor/fundamentals/startup#load-client-side-boot-resources) to modify URLs. + +:::moniker-end + ## SignalR configuration [SignalR's hosting and scaling conditions](xref:signalr/publish-to-azure-web-app) apply to Blazor apps that use SignalR. diff --git a/aspnetcore/blazor/host-and-deploy/webassembly/azure-static-web-apps.md b/aspnetcore/blazor/host-and-deploy/webassembly/azure-static-web-apps.md index 6fb9d181e2d6..4e9fb0156e1b 100644 --- a/aspnetcore/blazor/host-and-deploy/webassembly/azure-static-web-apps.md +++ b/aspnetcore/blazor/host-and-deploy/webassembly/azure-static-web-apps.md @@ -40,7 +40,7 @@ To deploy from Visual Studio, create a publish profile for Azure Static Web Apps 1. In the publish profile configuration, provide the **Subscription name**. Select an existing instance, or select **Create a new instance**. When creating a new instance in the Azure portal's **Create Static Web App** UI, set the **Deployment details** > **Source** to **Other**. Wait for the deployment to complete in the Azure portal before proceeding. -1. In the publish profile configuration, select the Azure Static Web Apps instance from the instance's resource group. Select **Finish** to create the publish profile. If Visual Studio prompts to install the Static Web Apps (SWA) CLI, install the CLI by following the prompts. The SWA CLI requires [NPM/Node.js (Visual Studio documentation)](/visualstudio/javascript/npm-package-management). +1. In the publish profile configuration, select the Azure Static Web Apps instance from the instance's resource group. Select **Finish** to create the publish profile. If Visual Studio prompts to install the Static Web Apps (SWA) CLI, install the CLI by following the prompts. The SWA CLI requires [npm/Node.js (Visual Studio documentation)](/visualstudio/javascript/npm-package-management). After the publish profile is created, deploy the app to the Azure Static Web Apps instance using the publish profile by selecting the **Publish** button. diff --git a/aspnetcore/blazor/host-and-deploy/webassembly/bundle-caching-and-integrity-check-failures.md b/aspnetcore/blazor/host-and-deploy/webassembly/bundle-caching-and-integrity-check-failures.md index 0bb3544f1e98..ab84368f003d 100644 --- a/aspnetcore/blazor/host-and-deploy/webassembly/bundle-caching-and-integrity-check-failures.md +++ b/aspnetcore/blazor/host-and-deploy/webassembly/bundle-caching-and-integrity-check-failures.md @@ -1,7 +1,7 @@ --- -title: ASP.NET Core Blazor WebAssembly .NET bundle caching and integrity check failures +title: ASP.NET Core Blazor WebAssembly caching and integrity check failures author: guardrex -description: Learn about WebAssembly .NET app and runtime bundle caching and how to resolve integrity check failures in Blazor WebAssembly apps. +description: Learn about asset caching for Blazor WebAssembly and how to resolve integrity check failures in Blazor WebAssembly apps. monikerRange: '>= aspnetcore-3.1' ms.author: wpickett ms.custom: mvc @@ -12,7 +12,7 @@ uid: blazor/host-and-deploy/webassembly/bundle-caching-and-integrity-check-failu [!INCLUDE[](~/includes/not-latest-version.md)] -This article explains how Blazor WebAssembly caches the WebAssembly .NET runtime and app bundle and how to diagnose and resolve integrity failures. +This article explains asset caching for Blazor WebAssembly and how to diagnose and resolve integrity failures. When a Blazor WebAssembly app loads in the browser, the app downloads boot resources from the server: @@ -20,13 +20,30 @@ When a Blazor WebAssembly app loads in the browser, the app downloads boot resou * .NET runtime and assemblies * Locale specific data -Except for Blazor's boot manifest file (`blazor.boot.json`) prior to the release of .NET 10†, WebAssembly .NET runtime and app bundle files are cached on clients. The Blazor boot configuration, inlined into `dotnet.js` in .NET 10 or later, contains a manifest of the files that make up the app that must be downloaded along with a hash of the file's content that's used to detect whether any of the boot resources have changed. Blazor caches downloaded files using the browser [Cache](https://developer.mozilla.org/docs/Web/API/Cache) API. +:::moniker range=">= aspnetcore-10.0" + +The Blazor boot configuration, inlined into `dotnet.js`, contains a fingerprinted manifest of the files that make up the app that must be downloaded along with a hash of each file's content. The app's files are preloaded and cached by the browser. > [!NOTE] -> †If upgrading an app to .NET 10 or later and the app relies on the `blazor.boot.json` manifest file for custom processing, we recommend collecting the information directly from the build. +> †In .NET 10 or later, the `blazor.boot.json` manifest file is no longer present. If upgrading an app that relies on the manifest file for custom processing, we recommend collecting the information directly from the build. + +When Blazor WebAssembly downloads an app's startup files, it instructs the browser to perform integrity checks on the responses. Blazor sends SHA-256 hash values for DLL (`.dll`), WebAssembly (`.wasm`), and other files. The file hashes of cached files are compared to the hashes in the boot configuration. An error is generated by the browser if any downloaded file's integrity check fails. + +For more information, see the following sections of the *Fundamentals: Static files* article: + +* [Preloaded Blazor framework static assets](xref:blazor/fundamentals/static-files#preloaded-blazor-framework-static-assets) +* [Fingerprint client-side static assets in standalone Blazor WebAssembly apps](xref:blazor/fundamentals/static-files#fingerprint-client-side-static-assets-in-standalone-blazor-webassembly-apps) + +:::moniker-end + +:::moniker range="< aspnetcore-10.0" + +Except for Blazor's boot manifest file (`blazor.boot.json`), WebAssembly .NET runtime and app bundle files are cached on clients. The Blazor boot configuration contains a manifest of the files that make up the app that must be downloaded along with a hash of the file's content that's used to detect whether any of the boot resources have changed. Blazor caches downloaded files using the browser [Cache](https://developer.mozilla.org/docs/Web/API/Cache) API. When Blazor WebAssembly downloads an app's startup files, it instructs the browser to perform integrity checks on the responses. Blazor sends SHA-256 hash values for DLL (`.dll`), WebAssembly (`.wasm`), and other files in the Blazor boot configuration, which isn't cached on clients. The file hashes of cached files are compared to the hashes in the Blazor boot configuration. For cached files with a matching hash, Blazor uses the cached files. Otherwise, files are requested from the server. After a file is downloaded, its hash is checked again for integrity validation. An error is generated by the browser if any downloaded file's integrity check fails. +:::moniker-end + Blazor's algorithm for managing file integrity: * Ensures that the app doesn't risk loading an inconsistent set of files, for example if a new deployment is applied to your web server while the user is in the process of downloading the application files. Inconsistent files can result in a malfunctioning app. @@ -145,6 +162,14 @@ In most cases, don't disable integrity checking. Disabling integrity checking do There may be cases where the web server can't be relied upon to return consistent responses, and you have no choice but to temporarily disable integrity checks until the underlying problem is resolved. +:::moniker range=">= aspnetcore-10.0" + +To disable integrity checks, [manually load client-side boot resources](xref:blazor/fundamentals/startup#load-client-side-boot-resources) and avoid passing the `integrity` parameter to the `fetch` call. + +:::moniker-end + +:::moniker range="< aspnetcore-10.0" + To disable integrity checks, add the following to a property group in the Blazor WebAssembly app's project file (`.csproj`): ```xml @@ -153,10 +178,12 @@ To disable integrity checks, add the following to a property group in the Blazor `BlazorCacheBootResources` also disables Blazor's default behavior of caching the `.dll`, `.wasm`, and other files based on their SHA-256 hashes because the property indicates that the SHA-256 hashes can't be relied upon for correctness. Even with this setting, the browser's normal HTTP cache may still cache those files, but whether or not this happens depends on your web server configuration and the `cache-control` headers that it serves. +:::moniker-end + > [!NOTE] > The `BlazorCacheBootResources` property doesn't disable integrity checks for [Progressive Web Applications (PWAs)](xref:blazor/progressive-web-app/index). For guidance pertaining to PWAs, see the [Disable integrity checking for PWAs](#disable-integrity-checking-for-pwas) section. -We can't provide an exhaustive list of scenarios where disabling integrity checking is required. Servers can answer a request in arbitrary ways outside of the scope of the Blazor framework. The framework provides the `BlazorCacheBootResources` setting to make the app runnable at the cost of *losing a guarantee of integrity that the app can provide*. Again, we don't recommend disabling integrity checking, especially for production deployments. Developers should seek to solve the underlying integrity problem that's causing integrity checking to fail. +We can't provide an exhaustive list of scenarios where disabling integrity checking is required. Servers can answer a request in arbitrary ways outside of the scope of the Blazor framework. The framework permits the preceding approach to make the app runnable at the cost of *losing a guarantee of integrity that the app can provide*. Again, we don't recommend disabling integrity checking, especially for production deployments. Developers should seek to solve the underlying integrity problem that's causing integrity checking to fail. A few general cases that can cause integrity issues are: diff --git a/aspnetcore/blazor/host-and-deploy/webassembly/http-caching-issues.md b/aspnetcore/blazor/host-and-deploy/webassembly/http-caching-issues.md index e730cddce1d9..7f18a7198b1b 100644 --- a/aspnetcore/blazor/host-and-deploy/webassembly/http-caching-issues.md +++ b/aspnetcore/blazor/host-and-deploy/webassembly/http-caching-issues.md @@ -54,6 +54,8 @@ Usually the source of cache state problems is limited to the HTTP browser cache, You can optionally include the `storage` directive to clear local storage caches at the same time that you're clearing the HTTP browser cache. However, apps that use client storage might experience a loss of important information if the `storage` directive is used. +:::moniker range="< aspnetcore-10.0" + ### Append a query string to the Blazor script tag If none of the previous recommended actions are effective, possible to use for your deployment, or apply to your app, consider temporarily appending a query string to the Blazor script's `