Problemübersicht:
Im resetPasswordHandle speichern wir das OTP 10 Minuten lang wie folgt im Cache:
Code: Select all
public async Task Handle(ForgetPasswordRequest req)
{
//my code
var codeCacheKey = $"{CacheConsts.FORGOT_PASS_CACHE_KEY_PREFIX}:{req.email}";
_cache.Set(codeCacheKey, code, TimeSpan.FromMinutes(10));
}
Code: Select all
public async Task
Handle(ForgetPasswordOtpRequest req)
{
//my code
var cacheKey = $"{CacheConsts.FORGOT_PASS_CACHE_KEY_PREFIX}:{user.Email}";
if (!_cache.TryGetValue(cacheKey, out string cachedCode))
{
return Failure(AccountFailureStatusTypes.CodeNotFoundOrExpired);
}
}
Gelegentlich stoßen wir auf eine Endlosschleife, in der das System ständig den Fehler CodeNotFoundOrExpired zurückgibt, obwohl das OTP im richtig eingestellt wurde Cache.
Das Problem bleibt bestehen, bis wir einen IIS-Reset durchführen. Danach funktioniert der Cache wieder wie erwartet.
Bitte um Unterstützung:
Könnten Sie uns bitte Einblicke oder Vorschläge dazu geben? Folgendes:
Mögliche Gründe, warum der Cache abläuft oder ohne einen IIS-Reset nicht korrekt abgerufen wird.
Empfehlungen zur Verbesserung der Stabilität unseres Cachings Ansatz, einschließlich der möglichen Verwendung verteilter Caching-Lösungen (z. B. Redis), falls erforderlich.
Alle spezifischen Konfigurationen in .NET Core 8, die sich auf das Verhalten von IMemoryCache in einer Produktionsumgebung auswirken könnten.