Dev.to
6/26/2026

A practical, “ship-it” guide to idempotency keys, request hashing, persistence, PUT semantics, and de-dup in handlers/queues on .NET + Azure
Short summary
This guide implements HTTP request idempotency using Idempotency-Key headers with storage on Azure SQL or Cosmos DB, including C# middleware code and ETag concurrency control. For Azure Service Bus, assign MessageId to business keys and enable duplicate detection paired with handler-level dedup via inbox pattern. Both approaches ensure exactly-once request semantics in distributed systems.
- •HTTP idempotency: store (TenantId, IdempotencyKey, RequestHash, StatusCode, ResponseBody) with unique constraint and middleware to replay responses
- •Message queue dedup: enable Service Bus DuplicateDetectionHistoryTimeWindow, set MessageId to business key, implement handler-level inbox pattern
- •Concurrency safety: use ETag/rowversion on PUT to prevent lost updates; reserve keys upfront to prevent thundering herds on concurrent duplicates
Generated with AI, which can make mistakes.
Is this a good recommendation for you?



