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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top