なぜ私のasp.netのキャッシングは、例外をスローして?
-
05-09-2019 - |
質問
ソースデータは、当社のメインの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方法は、単純にウェブサービスを呼び出して、格納されたデータテーブルに結果を解析します。
私は地元のテストのためにアプリケーションを再コンパイルするとき、さて、すべてはまだ細かい機能が、私は私のログファイルに次の例外メッセージを見つけます:
System.NullReferenceException:オブジェクト参照のインスタンスに設定されていません オブジェクト。 EAF.CacheMethods.CheckLocationsExpired(文字列のキーで、オブジェクトの値が、 CacheItemRemovedReason理由)で C:CacheMethods.vb \ DAL \プロジェクト\ \ HR \ EAF 2.0:ライン434で System.Web.Caching.CacheEntry.CallCacheItemRemovedCallback(CacheItemRemovedCallback コールバック、CacheItemRemovedReason理由)
私は、データが実際に存在し、最新であることを確認し、私は、デバッガをステップ実行するとき、コマンドの引数には何も場違いようだ。
誰もが、私はここに欠けているものを知っていますか?これは、処理を終了することは技術的にスレッドアボート例外をスローReponse.Redirectの問題のようなものを「ニュアンス」の別のものですか?
解決
それはあなたがそれにコールバック関数を与えていないうちに例外まだいますか?委任機能がnullのオブジェクトとの問題を持っているより多くのように思える。
他のヒント
私の最初に考えたのはGetAllCheckLocationsが例外をスローするか、nullを返しているということです。
たぶん、あなたはAJAXPro
か何かでメソッドを呼び出します。