症状
假设已在计算机上安装 Microsoft .NET Framework 4.7。 尝试使用 Cache.Insert (字符串、object、CacheDependency、DateTime、TimeSpan) Insert 重载方法将项目插入缓存对象时,可能会注意到插入的缓存项的过期时间远远早于指定的 DateTime (过期时间) 。
原因
System.Web.Caching.Cache 的内部实现使用协调世界时 (UTC) 时间戳进行绝对过期。 但是,此特定的 Cache.Insert (字符串、object、CacheDependecy、DateTime、TimeSpan) Insert 重载方法无法确保过期时间是否转换为 UTC。 因此,使用此重载插入缓存对象中的项的过期时间将早于或晚于预期,具体取决于与格林威治标准时间 (GMT) 的计算机时区差异。
解决方法
此问题的临时解决方法是使用 Cache.Add 方法或其他 Cache.Insert 重载方法。
解决方法
此问题将在.NET Framework的下一个版本中得到修复,并且也将在 .NET Framework 4.7 的下一个修补程序中提供。
状态
Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。