Start Debugging

dotnet-10

103 статей · Страница1из11

Сеттер FileSystemInfo.LastWriteTime или File.SetLastWriteTime в .NET

Оба пути заканчиваются одним и тем же вызовом ОС, поэтому записанная метка времени идентична. Различия кроются вокруг этого вызова: какой кеш сбрасывается, работают ли каталоги в Windows, как преобразуется DateTime не в UTC и можно ли указать открытый дескриптор. Используйте File.SetLastWriteTimeUtc, а для открытого файла передавайте дескриптор. Проверено на .NET 10.0.10.

Исправление: восстановление NuGet в Azure DevOps завершается ошибкой "Unable to find version 'x.y.z' of package" для внутреннего фида

Версия существует, но пайплайн её не видит. Проверьте роль удостоверения сборки на фиде, представление фида в URL, какой nuget.config использует задача, сопоставление источников пакетов и 30-минутный HTTP-кеш.

Исправление: Response.Cookies.Append не устанавливает cookie в браузере в ASP.NET Core

Заголовок Set-Cookie отправляется, но браузер отклоняет его или так и не сохраняет cookie. Исправляем SameSite=None без Secure, отсутствие credentials: 'include' вместе с AllowCredentials, политику согласия и поздние вызовы Append.
2026-10-27 errorsef-coredotnet

Исправление: The property 'X' is part of a key and so cannot be modified or marked as modified в EF Core

EF Core никогда не обновляет значение ключа у отслеживаемой сущности. Не копируйте ключ из DTO, используйте уникальный индекс вместо альтернативного ключа, а настоящий ключ меняйте вставкой новой строки и удалением старой. Проверено на EF Core 10.0.14.

Исправление: 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 и исправления, которые действительно работают.
Вперёд