Skip to content

v7.0.0

Latest

Choose a tag to compare

@github-actions github-actions released this 20 Oct 10:04
73360eb

7.0.0 (2026-10-20)

⚠ BREAKING CHANGES

  • idempotency: idempotency moves to the new CSharpEssentials.Idempotency core; see the migration guide.
    • IIdempotencyStore, IdempotencyReservation, IdempotencyReservationStatus, InMemoryIdempotencyStore and DistributedCacheIdempotencyStore are removed from CSharpEssentials.AspNetCore; use IIdempotencyRecordStore, InMemoryIdempotencyRecordStore and DistributedCacheIdempotencyRecordStore.
    • IdempotencyOptions.KeyScope and DefaultKeyScope are removed; use ScopeResolver with IdempotencyScopes. Scopes are built only through the IdempotencyScope factories, and AllowUnscopedKeys is replaced by UnscopedKeyBehavior.
    • IdempotencyOptions.ShouldStore is a Func<IdempotencyOutcome, bool> instead of a Func<int, bool>; IdempotencyStorePolicies.SuccessOnly restores the 6.x rule.
    • IdempotencyOptions.RetryAfter is a non-nullable TimeSpan; the 409 always carries Retry-After.
    • A 5xx after the handler started is stored for ServerErrorRetention; 503, 504, exceptions and aborts after the handler started keep the key in flight until InFlightTimeout instead of releasing it.
    • A key must be printable ASCII other than space, " and \; other keys get 400 Idempotency.KeyInvalid.
    • IdempotencyOptions is resolved as a transient CurrentValue, and records use the idem:v3: storage key format, so 6.x entries are not read.

Added

  • idempotency: production-grade idempotency across http, mediator, messaging and ef core (42287de)

Fixed

  • idempotency: store observe results in the business transaction (#158) (bdcbdd1)