Start Debugging

Тег: dotnet-10

97 статей · Страница1из10

Исправление: HttpProtocolException: The HTTP/2 server reset the stream. HTTP/2 error code 'PROTOCOL_ERROR'
Удалённая сторона отправила RST_STREAM с PROTOCOL_ERROR для одного запроса, и HttpClient не повторяет его сам. Выясните, какой узел сбросил поток, исправьте отклонённый запрос, повторяйте только идемпотентные вызовы или переведите этот узел на HTTP/1.1.
Что происходит с истёкшей записью MemoryCache и когда она на самом деле удаляется из памяти?
Истёкшая запись MemoryCache не удаляется по таймеру. Она остаётся в словаре, пока к ней не обратится чтение, не запустится фоновое сканирование с ограничением частоты или не начнётся уплотнение. Вот когда именно происходит каждое из этих событий и как добиться немедленного вытеснения.
Как пометить ответ действия контроллера как допускающий null во встроенном документе OpenAPI в ASP.NET Core
Microsoft.AspNetCore.OpenApi помечает ответ как допускающий null, только когда действие возвращает голый T? (а в .NET 10 не помечает даже Task<T?>). ActionResult<T?> и IActionResult теряют аннотацию и в .NET 10, и в .NET 11 RC2. Здесь разобрано, почему так происходит, показан проверенный трансформер операций, который это исправляет, и ловушка с 204 No Content, из-за которой спецификация лжёт, пока вы не измените форматтер MVC.
Что на самом деле копирует выражение `with` в C# и почему вычисляемые свойства record не пересчитываются?
Выражение with вызывает сгенерированный компилятором метод <Clone>$ записи, который запускает конструктор копирования: он копирует каждое поле экземпляра и пропускает все инициализаторы. Поэтому свойства, инициализированные из других свойств, кешированные значения и идентификаторы Guid оказываются устаревшими. Измерения на .NET 10 с C# 14 и исправления, которые действительно работают.
Миграция 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.
Исправление: FileInfo.Length возвращает устаревший размер файла, в который ещё идёт запись, в Windows
FileInfo кеширует размер, перечисление читает лениво обновляемую запись каталога NTFS, а процесс записи может всё ещё держать байты в своих буферах. Используйте Refresh() или, лучше, читайте длину через общий дескриптор с помощью RandomAccess.GetLength.
Исправление: конфликт версий NU1608 / NU1107 между Pomelo.EntityFrameworkCore.MySql и EF Core 10
Pomelo 9.0.0 допускает только EF Core Relational 9.0.x, а сборки для EF Core 10 нет. Оставьте все пакеты EF Core на 9.0.x или перейдите на Microting.EntityFrameworkCore.MySql 10.0.x. Подавление предупреждения приводит к падению при запуске.
Fix: Settings file 'DotnetToolSettings.xml' was not found in the package
Пакет инструмента нацелен на более новую версию .NET, чем SDK, выполняющий установку, или вообще не является инструментом .NET. Используйте более новый SDK, зафиксируйте версию инструмента с подходящей папкой tools или принудительно задайте --framework.
Как отбросить буферизованные нажатия клавиш перед Console.ReadKey в игровом цикле консольного приложения на C#
Очищайте буфер ввода консоли с помощью while (Console.KeyAvailable) Console.ReadKey(true) перед ожиданием новой клавиши и делайте это в каждом кадре игрового цикла, чтобы автоповтор не копился. Как устроен буфер в Windows и Unix в .NET 10, почему зажатые клавиши отстают, ловушка с эхо в Unix и FlushConsoleInputBuffer.
Как проверить, отслеживается ли сущность в DbContext, перед её подключением в EF Core
Используйте DbSet.Local.FindEntry(key), чтобы спросить у трекера изменений, отслеживается ли сущность с заданным ключом, без обращения к базе данных и без перебора. Почему Entry(entity).State вводит в заблуждение, почему Find выполняет запрос, и проверенный помощник AttachOrMerge для EF Core 10.
Вперёд