为什么我的asp.net缓存引发异常?
-
05-09-2019 - |
题
我有一堆在我的asp.net应用程序缓存简单的查找表,因为源数据来自本公司网站的架构一个单独的服务器上,它很少改变。我一直在这里和各种文档以下答案,我有我的初始加载函数调用下面:
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:对象引用不设置到的一个实例 宾语。在EAF.CacheMethods.CheckLocationsExpired(字符串键,对象的值, CacheItemRemovedReason原因)在 C:\项目\ HR \ EAF 2.0 \ DAL \ CacheMethods.vb:线434在 System.Web.Caching.CacheEntry.CallCacheItemRemovedCallback(CacheItemRemovedCallback 回调,CacheItemRemovedReason原因)
我确认该数据是确实有和最新的,并没有在命令参数似乎出来的地方时,我通过调试步骤。
有谁知道我在这里失踪?是那些“细微之处”的这一个又一个像Reponse.Redirect问题,即终止处理技术上引发线程中止异常?
解决方案
它仍然异常冷清,当你不给它一个回调函数?似乎更喜欢的委派功能具有与空对象的问题。
其他提示
您可能需要使用 HttpRuntime.Cache 代替。这有可能是HttpContext.Current为空如果从一个单元测试或例如
调用它我最初的想法是,GetAllCheckLocations被抛出异常或返回空值。
也许你打电话与AJAXPro
什么的方法。