March 15, 2026 ยท ๐ ~10 min read
Most tutorials on JWT authentication stop at "add AddJwtBearer() and configure the options." But the moment you need integration testing across multiple services behind bearer tokens, the configuration plumbing gets painful: every service needs the same signing key, the same issuer, the same audience, and the test project needs to mint tokens and discover service endpoints. In this article we'll look at a .NET Aspire playground that solves all of this with a single shared development JWT authority โ and takes it a step further by running the test project inside the Aspire orchestrator so every test appears as a traced span in the dashboard.
March 14, 2026 ยท ๐ ~6 min read
In the previous article we explored how the LoggerMessage attribute uses source generators to create high-performance logging code via static extension methods. That approach works great for shared log methods, but it requires you to pass the ILogger instance on every call. In this follow-up we'll look at two features that reduce boilerplate even further: non-static partial methods that access the logger from the primary constructor, and automatic exception recognition.
February 23, 2026 ยท ๐ ~1 min read
When running pull request validation, raw artifacts are not enough. Developers need immediate code coverage feedback.
October 11, 2025 ยท ๐ ~5 min read
Logging is essential for monitoring and debugging applications, but it can become a performance bottleneck when not implemented efficiently. The LoggerMessage attribute, introduced in .NET 6, offers a powerful solution that combines high performance with developer-friendly APIs. In this article, we'll explore how this attribute reduces logging overhead, handles exceptions gracefully, and leverages source generators to create optimized code.