Start Debugging

dotnet-10

103 件 · ページ1/11

.NET における FileSystemInfo.LastWriteTime セッターと File.SetLastWriteTime の違い

どちらも最終的には同じ OS 呼び出しに行き着くため、書き込まれるタイムスタンプは同一です。違いはその周辺にあります。どのキャッシュが無効化されるか、Windows でディレクトリを扱えるか、UTC 以外の DateTime がどう変換されるか、開いているハンドルを対象にできるか、です。File.SetLastWriteTimeUtc を使い、ファイルが開いている場合はハンドル経由で設定してください。.NET 10.0.10 で検証済みです。

修正: HttpProtocolException: The HTTP/2 server reset the stream. HTTP/2 error code 'PROTOCOL_ERROR'

ピアが 1 つのリクエストに対して PROTOCOL_ERROR 付きの RST_STREAM を送信しました。HttpClient は自動では再試行しません。どのホップがストリームをリセットしたかを特定し、拒否されたリクエストを修正し、冪等な呼び出しだけを再試行し、最後の手段としてそのホップを HTTP/1.1 に切り替えます。

期限切れの MemoryCache エントリはどうなるのか、そして実際にメモリから削除されるのはいつか

期限切れの MemoryCache エントリは、タイマーでは削除されません。読み取りが触れるか、スロットリングされたバックグラウンドスキャンが走るか、コンパクションが起動するまで、ディクショナリに残り続けます。それぞれがいつ起きるのか、そして積極的なエビクションを実現する方法を解説します。

ASP.NET Core 組み込み OpenAPI ドキュメントでコントローラーアクションのレスポンスを null 許容にする方法

Microsoft.AspNetCore.OpenApi がレスポンスを null 許容として出力するのは、アクションが素の T? を返す場合だけです(.NET 10 では Task<T?> でも出力されません)。ActionResult<T?> と IActionResult では、.NET 10 でも .NET 11 RC2 でもこの注釈が失われます。その理由、動作確認済みの operation transformer による修正方法、そして MVC のフォーマッターも変更しない限り仕様が実態と食い違う 204 No Content の落とし穴を解説します。

C# の `with` 式は実際に何をコピーするのか、そしてレコードの計算プロパティが再計算されないのはなぜか

with 式はレコードのコンパイラー生成メソッド <Clone>$ を呼び出し、そこでコピーコンストラクターが全インスタンスフィールドをコピーし、すべての初期化子をスキップします。そのため、他のプロパティから初期化されるプロパティ、キャッシュされた値、Guid の ID は古いまま残ります。.NET 10 と C# 14 で計測し、実際に有効な対処法を紹介します。
次へ