diff --git a/NewLife.Core/Caching/MemoryCache.cs b/NewLife.Core/Caching/MemoryCache.cs index 5c47eb65b..c6fb228d3 100644 --- a/NewLife.Core/Caching/MemoryCache.cs +++ b/NewLife.Core/Caching/MemoryCache.cs @@ -511,7 +511,7 @@ public void Set(T value, Int32 expire) if (expire <= 0) ExpiredTime = Int64.MaxValue; else - ExpiredTime = now + expire * 1000; + ExpiredTime = now + expire * 1000L; } /// 设置数值和过期时间 diff --git a/XUnitTest.Core/Caching/MemoryCacheTests.cs b/XUnitTest.Core/Caching/MemoryCacheTests.cs index 59e29f289..f7216d4e9 100644 --- a/XUnitTest.Core/Caching/MemoryCacheTests.cs +++ b/XUnitTest.Core/Caching/MemoryCacheTests.cs @@ -350,4 +350,25 @@ public void GetQueue() var ex = Assert.Throws(() => mc.GetQueue("queue")); Assert.StartsWith("Unable to convert the value of [queue]", ex.Message); } + + [Theory] + [InlineData(3)] + [InlineData(24)] + [InlineData(25)] + [InlineData(3650)] + public void LongExpireSet(Int32 days) + { + var mc = new MemoryCache(); + + mc.Set("name", "Stone", TimeSpan.FromDays(days)); + + var rs = mc.ContainsKey("name"); + Assert.True(rs); + + var val = mc.Get("name"); + Assert.Equal("Stone", val); + + var exp = mc.GetExpire("name"); + Assert.Equal(days, exp.Days); + } } \ No newline at end of file