ASP.NET Core Request Limits with IP and MemoryCache

Protect your ASP.NET Core APIs from abuse with custom request throttling middleware using IMemoryCache and per-IP limits. Learn to implement, configure, and monitor rate limiting for robust, high-performance APIs.

July 2, 2025 · Last modified: September 20, 2025 · 10 min

C#: Abstract Class or Interface? 10 Questions to Ask

Quick Reference Table Feature Abstract Class Interface When to Use Inheritance Single only Multiple allowed Abstract: shared logic; Interface: contracts Implementation Can provide Contract only Abstract: code reuse; Interface: flexibility Constructors Supported Not allowed Abstract: initialization; Interface: pure contracts State/Fields Yes No Abstract: data sharing; Interface: behavior only Performance Slightly faster Virtual dispatch Abstract: hot paths; Interface: most scenarios Testing Can be difficult Easy with mocks Abstract: integration tests; Interface: unit tests Common Pitfalls: ...

July 1, 2025 · Last modified: August 15, 2025 · 11 min

Understanding dotnet dev-certs https: Local HTTPS for .NET Development

Master local HTTPS in .NET with dotnet dev-certs https. Learn how to create, trust, and troubleshoot development certificates, avoid common pitfalls, and follow best practices for secure, productive local development.

July 1, 2025 · 6 min

How Does Composition Support the SOLID Principles? (C# Examples & Best Practices)

Discover how composition helps you follow the SOLID principles in C#. See practical examples for each principle, learn why composition is more flexible than inheritance, and get actionable tips for writing robust, testable, and maintainable code.

June 30, 2025 · 4 min

Composition Over Inheritance in C#

Discover why composition is often a better choice than inheritance in C#. This article explains the drawbacks of deep inheritance, demonstrates how to use composition for flexible and maintainable code, and provides practical tips for applying these principles in real-world projects. Includes code examples and guidance for testable, scalable software design.

June 29, 2025 · Last modified: September 20, 2025 · 12 min

DRY API Responses in ASP.NET Core

TL;DR Avoid repetitive response handling in ASP.NET Core controllers by using helper methods or result wrapper patterns. Helper methods reduce boilerplate for common responses like BadRequest, NotFound, and Ok. The result wrapper pattern centralizes success and error handling, making controllers cleaner and responses consistent. Keep business logic in services and HTTP response logic in controllers for better separation of concerns. Use extension methods and middleware for standardized error handling and global exception management. Consistent response patterns improve API documentation and client experience. Minimal performance impact; benefits in maintainability and clarity far outweigh the overhead. We’ve all been there. You’re building an API and you find yourself writing the same code over and over again: ...

June 26, 2025 · Last modified: September 20, 2025 · 5 min
Diagram showing HTTP request and response flow through custom logging middleware with stream capturing and rewinding techniques

Request & Response Body Logging in ASP.NET Core

TL;DR Use custom middleware to log HTTP request and response bodies in ASP.NET Core for better debugging and diagnostics. Implement stream rewinding to read request bodies without breaking downstream middleware. Always redact sensitive data and use selective logging to avoid performance and security issues. Handle large bodies by truncating logs and excluding static or health check endpoints. Consider built-in HttpLogging for simple scenarios, but use custom middleware for full control and compliance. We’ve all been there, stuck debugging an API issue for hours, wishing we could just see what’s actually coming in and going out of our application. That’s exactly what request and response body logging solves. ...

June 25, 2025 · Last modified: September 20, 2025 · 13 min

Angular @defer: Cut Initial Load Time by 97% [Real Benchmarks & Code]

TL;DR: Angular’s @defer directive delays non-critical UI rendering, cutting initial load time by up to 97% in real apps. Use it to lazy load heavy components, reduce Time to Interactive (TTI), and improve Core Web Vitals. Includes real benchmarks and production-ready examples. Introduction Ever loaded up an Angular app and watched that progress bar crawl while your users bail? Yeah, me too. That’s why I got so excited when the Angular team released the @defer feature. It’s a game-changer for those of us battling slow initial load times. ...

June 23, 2025 · Last modified: July 3, 2025 · 21 min

Handle Request Cancellation in ASP.NET Core

TL;DR: ASP.NET Core cancels requests when the client disconnects or times out. Use HttpContext.RequestAborted and pass it through to services and EF Core/database calls. Proper cancellation avoids wasted CPU, memory leaks, and long-running queries. Always propagate the cancellation token from controller to database for graceful shutdown. Ever clicked the stop button while waiting for a web page to load? What actually happens on the server when you do that? ...

June 22, 2025 · Last modified: September 19, 2025 · 13 min

C# 14’s params for Collections: Say Goodbye to Arrays!

Ever used the params keyword in C#? If you write C# code regularly, you probably reach for it whenever you need to pass a variable number of arguments to a method. It’s super handy, letting you skip the tedious step of creating arrays first. But until now, there’s been a limitation: params only worked with arrays. This meant every call created memory allocations with potential performance costs. The good news? C# 14 is changing the game by extending params to work with modern collections like IEnumerable<T>, Span<T>, and more. ...

June 21, 2025 · Last modified: July 24, 2025 · 3 min
×