Production Rate Limiting in ASP.NET Core
Most ASP.NET Core rate-limiting examples stop after registering a fixed window. That is enough to demonstrate the middleware, but it is not enough for a production policy.
Blogbeitrag lesenMost ASP.NET Core rate-limiting examples stop after registering a fixed window. That is enough to demonstrate the middleware, but it is not enough for a production policy.
Blogbeitrag lesenFor more than two decades, (decimal)1.23 returned 1.23m. It looked correct, it passed every test and it was a polite lie.
Blogbeitrag lesenDistroless, Chiseled and Alpine are often compared as three equivalent Linux distributions. They are not. Alpine is a distribution built around musl, BusyBox and apk. Distroless describes a runtime image without a …
Blogbeitrag lesenIn the week of October 21, 2026, government portals in the Netherlands, Finland and Germany, hospital websites and several large companies took their public sites offline. Not because they had been breached, but because …
Blogbeitrag lesenMost .NET Dockerfiles repeat the same five steps: restore, publish, select the matching Microsoft runtime image, copy the output and start the application. That works, but it rarely expresses application-specific intent. …
Blogbeitrag lesenbuilder.Services.AddProblemDetails() registers infrastructure. It does not create an error contract. An ASP.NET Core request can fail during binding, validation, authentication, authorization, endpoint execution, …
Blogbeitrag lesenRetries are the most visible resilience strategy and the easiest one to misuse. Repeating a failing call can recover from a short network problem. It can also multiply load, repeat a write and keep working long after the …
Blogbeitrag lesenASP.NET Core 11 has no single feature that fundamentally changes how web applications are built. That is not a criticism. Mature frameworks improve by removing custom infrastructure, tightening defaults and making common …
Blogbeitrag lesenMicrosoft Agent Framework is the successor to the agent capabilities in Semantic Kernel and AutoGen. That statement is easy to misread as “replace the package and rename a few classes.” The migration is more …
Blogbeitrag lesenAn MCP server can look deceptively small. A package is installed, a method receives an attribute and ASP.NET Core maps an endpoint. That is enough for a demonstration. It is not enough for a server that is allowed to …
Blogbeitrag lesenTelemetry, logging and auditing are often implemented through the same API because all three produce timestamped records. That similarity is superficial. They answer different questions, tolerate different failure modes …
Blogbeitrag lesenTemporary data is easy to create and surprisingly difficult to remove reliably. Sessions, idempotency keys, import buffers, transient integration responses, processed-message markers and short-lived audit records all …
Blogbeitrag lesenApplications that do not use ASP.NET Core Identity still need a disciplined password-storage design. This often leads to a requirement phrased as “password encryption.” That phrase is dangerous because encryption is …
Blogbeitrag lesenThe 2.0 release of the official Model Context Protocol (MCP) C# SDK is more than a version increment. It implements the 2026-07-28 MCP specification revision, which changes the default shape of MCP over HTTP. The …
Blogbeitrag lesenTime is an external dependency. That may sound unusual at first because DateTime.UtcNow is available anywhere without configuration. This convenience becomes a problem as soon as business rules depend on the current …
Blogbeitrag lesenAzure Static Web Apps is primarily a host for static frontend assets, but it can also deploy a small HTTP API alongside the frontend. That API is implemented as an Azure Functions application and is exposed through the …
Blogbeitrag lesenError responses are part of an API contract. Still, many systems grow them incidentally: one endpoint returns { "error": "not found" }, another returns an array of validation errors, a gateway adds its own structure and …
Blogbeitrag lesen.NET 11 adds a small but useful improvement to the built-in observability story: MemoryCache can now publish OpenTelemetry-compatible metrics directly through System.Diagnostics.Metrics. That makes cache behavior visible …
Blogbeitrag lesenHono is often associated with Cloudflare Workers and for good reason. Its small routing model, Web Standard API surface and direct fetch integration make it a natural fit for edge runtimes. That association can obscure a …
Blogbeitrag lesenAzure Cosmos DB has a habit of exposing architectural weaknesses very early. Classic data-access patterns that work perfectly fine with relational databases often become expensive, noisy and operationally awkward once …
Blogbeitrag lesen