我有一堆簡單的查找表緩存在我的asp.net應用程序中,因爲源數據位於我們主Web體系結構的單獨服務器上,並且它很少發生變化。我一直在這裏和各種文檔以下答案,我有我的初始加載函數調用如下爲什麼我的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(String鍵,對象的值, CacheItemRemovedReason原因):\項目\ HR \ EAF 2.0 \ DAL \ CacheMethods.vb:線434在 System.Web.Caching.CacheEntry.CallCacheItemRemovedCallback(CacheItemRemovedCallback 回調,CacheItemRemovedReason原因)
我驗證數據是確實有和最新的,並沒有在命令行參數顯得格格不入,當我通過調試步驟。
有人知道我在這裏失蹤了嗎?這是否是Reponse.Redirect問題中的另一個「細微差別」問題,其中技術上終止處理引發線程異常終止異常?
我應該從初始加載還是緩存過期方法中刪除回調函數? – 2009-02-17 22:42:24
嘿!這看起來有希望!我沒有看到任何錯誤,我將嘗試使用一些其他緩存項目,這些項目有類似的問題,並查看數據是否仍然存在。 – 2009-02-18 00:01:56