asp.net - 为什么我的 asp.net 缓存抛出异常?

标签 asp.net caching content-expiration

我在我的 asp.net 应用程序中缓存了一堆简单的查找表,因为源数据位于与我们的主 Web 架构不同的服务器上,并且很少更改。我一直在关注这里的答案和各种文档,并且我的初始加载函数调用以下内容:

HttpContext.Current.Cache.Insert("CheckLocations", GetAllCheckLocations(), _
                                 Nothing, DateAdd(DateInterval.Day, 1, Now()), _
                                 System.Web.Caching.Cache.NoSlidingExpiration, _
                                 CacheItemPriority.Normal, _
                                 New CacheItemRemovedCallback(AddressOf CheckLocationsExpired))

对于我的缓存过期回调,我有以下代码。

Public Shared Sub CheckLocationsExpired(ByVal key As String, ByVal value As Object, ByVal reason As CacheItemRemovedReason)

   Dim dtCheckLocation As New ReferenceSchema.CheckLocationDataTable
   dtCheckLocation = GetAllCheckLocations()

   HttpContext.Current.Cache.Insert("CheckLocations", dtCheckLocation, Nothing, _
                                    DateAdd(DateInterval.Day, 1, Now()), _
                                    System.Web.Caching.Cache.NoSlidingExpiration, _
                                    CacheItemPriority.Normal, _
                                    New CacheItemRemovedCallback(AddressOf CheckLocationsExpired))

End Sub

郑重声明,GetAllCheckLocations 方法只是调用 Web 服务并将结果解析到正在存储的数据表中。

现在,当我重新编译应用程序进行本地测试时,一切仍然正常,但我在日志文件中发现以下异常消息:

System.NullReferenceException: Object reference not set to an instance of an object. at EAF.CacheMethods.CheckLocationsExpired(String key, Object value, CacheItemRemovedReason reason) in C:\Projects\HR\EAF 2.0\DAL\CacheMethods.vb:line 434 at System.Web.Caching.CacheEntry.CallCacheItemRemovedCallback(CacheItemRemovedCallback callback, CacheItemRemovedReason reason)

我验证数据确实存在并且是最新的,并且当我单步执行调试器时,命令参数中的任何内容似乎都不合适。

有人知道我在这里缺少什么吗?这是像 Reponse.Redirect 问题那样的另一个“细微差别”吗?技术上终止处理会引发线程中止异常?

最佳答案

您可能想使用HttpRuntime.Cache反而。如果您从单元测试等调用它,则 HttpContext.Current 可能为 null。

关于asp.net - 为什么我的 asp.net 缓存抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/558864/

相关文章:

asp.net - AWS 对象失效 -/如何确定图像是否从 Edge 中删除

java - 理解hibernate一级缓存

mysql - Qcache_hits 始终为 0

google-analytics - cxApi.cxApi.getChosenVariation()仅返回cxApi.NO_CHOSEN_VARIATION

c# - 如何在 ADO.NET Entity Framework 中加入

javascript - ScriptManager.RegisterClientScriptBlock 无法打开特定大小的窗口

python - 如何防止 python urllib3 缓存响应

java - 如何使用 spring-data-couchbase 为特定 Couchbase 文档设置 TTL?

asp.net - 维基内容可移植吗?