我有一堆在我的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什么的方法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top