Browse .NET Blogs (14)

Andrew Lock digs into .NET 11 preview 7’s new union types and closed class hierarchies, focusing on where System.Text.Json serialization and deserialization fall over. He shows the default behavior, the exceptions you’ll hit with inferred polymorphism, and the workarounds using JsonDerivedType and custom union type classifiers.
Andrew Lock shows how to get the total logical CPU count on a host machine (not just the CPUs available to the current process) in modern .NET. The post compares `Environment.ProcessorCount` behavior across runtimes and provides a cross-platform helper using P/Invoke on Windows/macOS and file parsing on Linux.
Andrew Lock explains the new CSRF protection in ASP.NET Core (.NET 11 preview 6) that uses Fetch Metadata HTTP headers instead of synchronizer tokens, including how the middleware decides to allow or deny requests and what changes (if any) app authors need to make.
Andrew Lock explains the browser Fetch Metadata request headers (Sec-Fetch-Site, Sec-Fetch-Mode, Sec-Fetch-Dest, and Sec-Fetch-User), what their values mean, and how servers can use them to spot suspicious cross-origin requests and add another layer of CSRF defense alongside tokens and SameSite cookies.
Andrew Lock explains how .NET 11 improves System.Diagnostics.Process output handling to avoid stdout/stderr deadlocks, and introduces new APIs for capturing text, lines, and bytes from child processes with simpler sync and async patterns.
DevClass reports on renewed community criticism of Microsoft’s .NET support lifecycle, arguing that the three-year LTS window is too short for enterprise upgrade and adoption cycles and can leave only a one-year window to move between LTS releases.
Andrew Lock explains the new C# “closed class hierarchies” feature in .NET 11 preview 5, showing how it restricts inheritance to a single assembly and why that matters for safer switch expressions. He also covers how to enable the preview feature and what limitations to expect.
Rick Strahl explains why inheriting ASP.NET Core MVC controllers with attribute routes can trigger ambiguous route matches (500 errors), and shows two practical fixes: using abstract base controllers to avoid duplicate route registration, or suppressing base-controller action descriptors with a custom IActionDescriptorProvider.
Rick Strahl explains why inheriting ASP.NET Core MVC controllers that use attribute routing can lead to 500 errors and ambiguous route matches, especially when the base controller lives in a referenced library. He breaks down the root cause (duplicate routes) and shows practical fixes for library and app authors.
John Edward explains what “agentic AI” means in the Microsoft ecosystem, focusing on how goal-driven agents plan tasks, call tools, and maintain memory. The article maps those concepts to Azure AI Foundry, Semantic Kernel, and Microsoft Graph, with concrete enterprise workflow examples.
Tim D'haeyer explains how to replace BizTalk-style code-table mapping during migrations by using an Azure Function that enriches XML documents via XPath-driven rules and SQL lookups, keeping Azure Logic Apps focused on orchestration instead of complex transformation logic.
Andrew Lock explains the new StringBuilder.MoveChunks() API in .NET 11 preview 5, showing how it can avoid large ToString() allocations by transferring a StringBuilder’s internal buffers. He also digs into the implementation details and why this matters for Roslyn source generators and SourceText creation.
Rick Strahl breaks down three practical ways to ship a Windows app that works as both a GUI and a CLI, using his WebPackageViewer tool as the example and calling out the real-world trade-offs around console attachment, prompt glitches, and console-window flashing.
John Edward explains why AI apps are moving from single “copilot” assistants to multi-agent systems, and how Semantic Kernel can be used to orchestrate specialized agents that collaborate via tools, memory, and coordination patterns—along with the practical engineering challenges this introduces.

End of content

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please reload the page.