3

ソースデータはメインの 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: オブジェクト参照がオブジェクトのインスタンスに設定されていません。C:\Projects\HR\EAF 2.0\DAL\CacheMethods.vb:line 434 の EAF.CacheMethods.CheckLocationsExpired (文字列キー、オブジェクト値、CacheItemRemovedReason 理由) で System.Web.Caching.CacheEntry.CallCacheItemRemovedCallback (CacheItemRemovedCallback コールバック、CacheItemRemovedReason)理由)

データが実際にそこにあり、最新であることを確認します。デバッガーをステップ実行しても、コマンド引数に不自然な点はありません。

ここで何が欠けているか知っている人はいますか?これは、技術的に処理を終了するとスレッド中止例外がスローされる Reponse.Redirect の問題のような「ニュアンス」の 1 つですか?

4

4 に答える 4

4

代わりにHttpRuntime.Cacheを使用することもできます。単体テストなどから呼び出している場合、HttpContext.Current が null である可能性があります。

于 2009-02-17T22:35:33.813 に答える
0

たぶん、AJAXPro何かでメソッドを呼び出します。

于 2009-05-13T07:21:15.183 に答える
0

私の最初の考えは、GetAllCheckLocations が例外をスローしているか、null を返しているということです。

于 2009-02-17T21:55:12.930 に答える