Perché il mio asp.net caching un'eccezione?
-
05-09-2019 - |
Domanda
Ho un sacco di semplici tabelle di ricerca nella cache nella mia applicazione asp.net in quanto i dati di origine si trova su un server separato dalla nostra architettura web principale e cambia di rado. Ho seguito le risposte qui e documentazione varia e ho la mia funzione di caricamento iniziale chiamare il seguente:
HttpContext.Current.Cache.Insert("CheckLocations", GetAllCheckLocations(), _
Nothing, DateAdd(DateInterval.Day, 1, Now()), _
System.Web.Caching.Cache.NoSlidingExpiration, _
CacheItemPriority.Normal, _
New CacheItemRemovedCallback(AddressOf CheckLocationsExpired))
Per la cache è scaduto richiamata, ho il seguente codice.
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
Per la cronaca, il metodo GetAllCheckLocations chiama semplicemente un servizio Web e analizza i risultati nella tabella dati che vengono memorizzati.
Ora, quando ho ricompilare l'applicazione per i test locali, tutto funziona ancora bene, ma ho trovato il seguente messaggio di eccezione nel mio file di log:
System.NullReferenceException: Il riferimento non impostato a un'istanza di un oggetto. a EAF.CacheMethods.CheckLocationsExpired (String key, Object value, motivo CacheItemRemovedReason) in C: \ Projects \ HR \ EAF 2.0 \ DAL \ CacheMethods.vb: linea 434 a System.Web.Caching.CacheEntry.CallCacheItemRemovedCallback (CacheItemRemovedCallback callback, motivo CacheItemRemovedReason)
I verificare che i dati è davvero lì e fino ad oggi, e nulla negli argomenti del comando sembra fuori luogo quando faccio un passo attraverso il debugger.
Qualcuno sa che cosa mi manca qui? E 'questa un'altra di quelle "sfumature" come il problema Reponse.Redirect in cui chiude il trattamento lancia tecnicamente un'eccezione filo interruzione?
Soluzione
Ha ancora un'eccezione quando non si dà una funzione di callback? Sembra più la funzione delegata sta avendo problemi con oggetti nulli.
Altri suggerimenti
Si consiglia di utilizzare HttpRuntime.Cache , invece. E 'possibile che HttpContext.Current è nullo se si chiama da un test di unità o tali.
Il mio primo pensiero è che GetAllCheckLocations sta gettando l'eccezione o tornare null.
Forse si chiama il metodo con AJAXPro
o qualcosa del genere.