ASP.NET Core in Action, Third Edition is now in print
I'm excited to announce that my new book, ASP.NET Core in Action, Third Edition is now available in print! You can buy it from The Manning website Amazon Amazon UK (Available soon!) As always, I...
View ArticleKeyed service dependency injection container support: Exploring the .NET 8...
This is the sixth post in the series: Exploring the .NET 8 preview. Part 1 - Using the new configuration binder source generator Part 2 - The minimal API AOT compilation template Part 3 - Comparing...
View ArticleLast chance to win a ticket to APIDays London with my new book!
If you purchase a copy of my new book, ASP.NET Core in Action, Third Edition, and live in the UK or Europe, you can win one of 25 free tickets to APIDays London, worth £799! You'll have to be quick...
View ArticleForm binding in minimal APIs: Exploring the .NET 8 preview - Part 7
This is the seventh post in the series: Exploring the .NET 8 preview. Part 1 - Using the new configuration binder source generator Part 2 - The minimal API AOT compilation template Part 3 - Comparing...
View ArticleIntroducing the Identity API endpoints: Exploring the .NET 8 preview - Part 8
This is the eighth post in the series: Exploring the .NET 8 preview. Part 1 - Using the new configuration binder source generator Part 2 - The minimal API AOT compilation template Part 3 - Comparing...
View ArticleShould you use the .NET 8 Identity API endpoints?
In my previous post I described the new ASP.NET Core Identity API endpoints introduced in .NET 8. In this post I look more at the design of these endpoints, the implications of using them, and...
View ArticleCan you use the .NET 8 Identity API endpoints with IdentityServer?
In a previous post, I introduced the new ASP.NET Core Identity APIs that have been added as part of .NET 8. In a subsequent post I described some reasons why I generally don't think you should use...
View ArticleRendering Blazor components to a string: Exploring the .NET 8 preview - Part 9
This is the ninth post in the series: Exploring the .NET 8 preview. Part 1 - Using the new configuration binder source generator Part 2 - The minimal API AOT compilation template Part 3 - Comparing...
View ArticleUpdates to Docker images in .NET 8: Exploring the .NET 8 preview - Part 10
This is the tenth post in the series: Exploring the .NET 8 preview. Part 1 - Using the new configuration binder source generator Part 2 - The minimal API AOT compilation template Part 3 - Comparing...
View ArticleShort-circuit routing in .NET 8: Exploring the .NET 8 preview - Part 11
This is the eleventh post in the series: Exploring the .NET 8 preview. Part 1 - Using the new configuration binder source generator Part 2 - The minimal API AOT compilation template Part 3 - Comparing...
View ArticleAvoiding flaky tests with TimeProvider and ITimer: Exploring the .NET 8...
This is the twelfth post in the series: Exploring the .NET 8 preview. Part 1 - Using the new configuration binder source generator Part 2 - The minimal API AOT compilation template Part 3 - Comparing...
View ArticleReading JSON and binary data from multipart/form-data sections in ASP.NET Core
In this post I describe how to read both JSON and binary data from a multipart/form-data request in ASP.NET Core. A colleague at work needed this functionality, and we couldn't find a way to do it...
View ArticleA failed experiment with interceptors in C# 12 and .NET 8
In this post I describe how I tried (and failed) to add an interceptor to my NetEscapades.EnumExtensions NuGet package. The bad news is I didn't get it to work. The good news is that the experiment...
View ArticleBehind [LogProperties] and the new telemetry logging source generator
In this post I take a look at an apparently simple enhancement to logging introduced along with .NET 8: the [LogProperties] attribute. This attribute can make it easier to log additional state in your...
View ArticleEnriching logs with [TagProvider] and ILogEnricher
In my previous post I looked at the Microsoft.Extensions.Telemetry.Abstractions NuGet package, the new logging source generator it contains, and its support for [LogProperties] to log whole objects as...
View ArticleRedacting sensitive data in logs with Microsoft.Extensions.Compliance.Redaction
In my previous two posts I've been looking at new logging features added in .NET 8 by way of the Microsoft.Extensions.Telemetry and Microsoft.Extensions.Telemetry.Abstractions packages. In this post...
View ArticleUpdates to the StronglyTypedId library - simplification, templating, and...
This is the eighth post in the series: Using strongly-typed entity IDs to avoid primitive obsession. Part 1 - An introduction to strongly-typed entity IDs Part 2 - Adding JSON converters to strongly...
View ArticleBacking up files to Azure blob storage with azcopy
In this post I describe how I used the azcopy command-line tool to backup some files to Azure blob storage. This is somewhat outside my comfort-zone, so I'm most posting it in the hope people will...
View ArticleA brief look at StringValues
In this post I take a brief look at one of the core types of ASP.NET Core, the humble StringValues. I look at where StringValues is used in the framework, what it's used for, how it's implemented, and...
View ArticleAvoiding performance pitfalls in incremental generators: Creating a source...
This is the ninth post in the series: Creating a source generator. Part 1 - Creating an incremental generator Part 2 - Testing an incremental generator with snapshot testing Part 3 - Integration...
View Article