Start Debugging

ASP.NET Core

120 статей · Страница2из12

.NET Extensions 10.11: буферизованные логи наконец сохраняют свои scope

Microsoft.Extensions.Telemetry 10.11.0, вышедший 2026-10-15, добавляет в глобальную буферизацию логов и буферизацию на уровне запроса экспериментальную опцию IncludeScopes, чтобы OrderId и TenantId из BeginScope переживали Flush(), а не терялись молча.

Миграция Blazor-приложения с маршрутизируемыми компонентами в другой сборке с .NET 8 на .NET 10

Обновление Blazor Web App, страницы которого находятся в библиотеке классов Razor или в проекте .Client, с .NET 8 на .NET 10: что остаётся прежним (обе регистрации AdditionalAssemblies) и четыре вещи, которые ломаются, от 404 на blazor.web.js в тонких хостах до пустых страниц NotFoundPage. Замеры на ASP.NET Core 8.0.32 и 10.0.10.

Префикс ключа, отдельная база данных или отдельный экземпляр Redis для мультитенантного кеширования в ASP.NET Core

Почти для любого мультитенантного приложения ASP.NET Core используйте префикс тенанта на одном общем Redis, выносите на отдельный экземпляр только тенантов с договорными требованиями к изоляции или шумной нагрузкой и не используйте нумерованные базы данных: Redis Cluster, Azure Managed Redis и Redis Cloud поддерживают только базу 0.

Blazor получает компоненты агентного UI в .NET 11 RC1: ChatPage, UIAgent и подтверждение вызова инструментов

Microsoft.AspNetCore.Components.AI - экспериментальный пакет Blazor в .NET 11 RC1, который превращает любой IChatClient в потоковый чат-интерфейс с подтверждением вызова инструментов, типизированным отображением инструментов и общим состоянием поверх AG-UI.

Исправление: ASP.NET Core возвращает 400 "The X field is required" для свойства типа string, не допускающего null

При <Nullable>enable</Nullable> MVC обрабатывает каждый ссылочный тип, не допускающий null, как [Required(AllowEmptyStrings = true)]. Объявите необязательные свойства как string?, задайте им значение по умолчанию или установите SuppressImplicitRequiredAttributeForNonNullableReferenceTypes.

Исправляем: Conflicting assets with the same target path после перехода на .NET 10 SDK

В .NET 10 SDK каждый проект Microsoft.NET.Sdk.Web получает StaticWebAssetBasePath=/, поэтому веб-приложение, ссылающееся на другое веб-приложение, вызывает конфликт. Задайте базовый путь в проекте, на который ссылаются. Отключение сжатия не помогает.

Исправление: Unable to find the required 'IAuthenticationService' service с [Authorize(Policy = ...)] в Blazor

Страница Blazor Web App с [Authorize] становится конечной точкой, которую проверяет AuthorizationMiddleware, а неудачная проверка вызывает ChallengeAsync, для которого нужен AddAuthentication. Зарегистрируйте настоящую схему или пропускайте конечные точки компонентов дальше, к AuthorizeRouteView.

Исправление: собственный DelegatingHandler не запускается повторно при каждом retry с AddStandardResilienceHandler

DelegatingHandler, зарегистрированный до AddStandardResilienceHandler, выполняется один раз на логический запрос, а не на каждую повторную попытку. Перенесите его после обработчика устойчивости и сделайте идемпотентным, потому что retry повторно отправляет тот же HttpRequestMessage. Проверено на Microsoft.Extensions.Http.Resilience 10.10.0 и 8.10.0.

Исправление: IConfiguration.Bind не заполняет свойство-массив или List<T> из appsettings.json

Биндер молча пропускает свойства-массивы без публичного сеттера, IReadOnlyList<T> только для чтения, поля и init-члены при генераторе исходного кода, а также добавляет элементы к значениям по умолчанию вместо их замены. Проверено на .NET 10.0.12 и 11 RC 1.

Как отключить проверку antiforgery для одной конечной точки формы в minimal API в ASP.NET Core 11

Вызовите .DisableAntiforgery() на этой одной конечной точке или на MapGroup. В ASP.NET Core 11 это отключает и middleware токенов, и новую автоматическую проверку CSRF. Измеренная матрица, ловушки приоритета и более узкие альтернативы.
Назад Вперёд