diff --git a/Directory.Packages.props b/Directory.Packages.props
index 50a05dbba1..07eaa65740 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -88,7 +88,7 @@
-
+
diff --git a/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/AbpCachingModule.cs b/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/AbpCachingModule.cs
index da900447df..632bfa416e 100644
--- a/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/AbpCachingModule.cs
+++ b/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/AbpCachingModule.cs
@@ -1,7 +1,5 @@
using Microsoft.Extensions.DependencyInjection;
using System;
-using Microsoft.Extensions.Caching.Hybrid;
-using Microsoft.Extensions.DependencyInjection.Extensions;
using Volo.Abp.Caching.Hybrid;
using Volo.Abp.Json;
using Volo.Abp.Modularity;
@@ -28,9 +26,7 @@ public class AbpCachingModule : AbpModule
context.Services.AddSingleton(typeof(IDistributedCache<>), typeof(DistributedCache<>));
context.Services.AddSingleton(typeof(IDistributedCache<,>), typeof(DistributedCache<,>));
-#pragma warning disable EXTEXP0018
context.Services.AddHybridCache().AddSerializerFactory();
-#pragma warning restore EXTEXP0018
context.Services.AddSingleton(typeof(IHybridCache<>), typeof(AbpHybridCache<>));
context.Services.AddSingleton(typeof(IHybridCache<,>), typeof(AbpHybridCache<,>));
diff --git a/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/Hybrid/AbpHybridCache.cs b/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/Hybrid/AbpHybridCache.cs
index 2894af9f3d..66506a0b56 100644
--- a/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/Hybrid/AbpHybridCache.cs
+++ b/framework/src/Volo.Abp.Caching/Volo/Abp/Caching/Hybrid/AbpHybridCache.cs
@@ -75,7 +75,7 @@ public class AbpHybridCache : IHybridCache : IHybridCache>.Instance;
KeyNormalizer = keyNormalizer;
@@ -215,10 +215,15 @@ public class AbpHybridCache : IHybridCache(bytes, 0, bytes.Length));;
+ // Because HybridCache wraps the cache in L2(distributed cache), we can’t unwrap it directly and can only retrieve the value through its API
+ return await HybridCache.GetOrCreateAsync(
+ key: NormalizeKey(key),
+ factory: async cancel => await factory(),
+ options: optionsFactory?.Invoke(),
+ tags: null,
+ cancellationToken: token);
}
value = await factory();