Frage

Ich habe eine Reihe von einfachen Lookup-Tabellen in meiner asp.net Anwendung zwischengespeichert, da die Quelldaten auf einem separaten Server von unserer Web-Architektur ist und es ändert sich selten. Ich habe Antworten hier folgende und verschiedene Unterlagen und ich habe meine anfängliche Ladefunktion rufen Sie die folgende:

HttpContext.Current.Cache.Insert("CheckLocations", GetAllCheckLocations(), _
                                 Nothing, DateAdd(DateInterval.Day, 1, Now()), _
                                 System.Web.Caching.Cache.NoSlidingExpiration, _
                                 CacheItemPriority.Normal, _
                                 New CacheItemRemovedCallback(AddressOf CheckLocationsExpired))

Für meine Cache Rückruf abgelaufen, ich habe den folgenden Code.

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

Für die Aufzeichnung der GetAllCheckLocations Methode ruft einfach einen Web-Service und analysiert die Ergebnisse in der Datentabelle gespeichert werden.

Nun, wenn ich die Anwendung für die lokale Prüfung neu kompilieren, alles noch funktioniert gut, aber ich finde die folgende Ausnahmemeldung in meiner Protokolldatei:

  

System.NullReferenceException: Objektverweis nicht auf eine Instanz eines gesetzt   Objekt. bei EAF.CacheMethods.CheckLocationsExpired (String key, Objektwert,   CacheItemRemovedReason Grund) in   C: \ Projects \ HR \ EAF 2.0 \ DAL \ CacheMethods.vb: Linie 434 an   System.Web.Caching.CacheEntry.CallCacheItemRemovedCallback (CacheItemRemovedCallback   Rückruf, CacheItemRemovedReason Grund)

Ich bestätige, dass die Daten in der Tat gibt es und auf dem neuesten Stand, und nichts in den Befehlsargumente scheint fehl am Platz, wenn ich durch den Debugger Schritt.

Weiß jemand, was ich hier fehlt? Ist das ein anderes jener „Nuancen“, wie das Reponse.Redirect Problem, bei dem Beenden der Verarbeitung technisch einen Thread abbrechen Ausnahme auslöst?

War es hilfreich?

Lösung

Ist es aus noch Ausnahme, wenn Sie es nicht eine Rückruffunktion geben? Scheint eher wie die delegierte Funktion Probleme mit Null Objekten mit.

Andere Tipps

Sie können verwenden möchten HttpRuntime.Cache statt. Es ist möglich, dass HttpContext.Current null ist, wenn Sie es von einem Gerät zu testen oder so anrufen.

Mein erster Gedanke ist, dass GetAllCheckLocations die Ausnahme wirft oder Rückgabe null.

Vielleicht rufen Sie die Methode mit AJAXPro oder so etwas.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top