ASP.NET アプリケーション (ASP.NET 3.5、SQL 2008) で参照データの SQL キャッシュ依存関係を作成しようとしています。aspnet_regiis ユーティリティを使用して、データベースといくつかのテーブルの SQL キャッシュを有効にしました。必要な sqlcachedependency エントリを web.config に作成しました。application_start イベントに次のコードを追加しました
DateTime dt = DateTime.Now;
SqlCacheDependency dep1 = new SqlCacheDependency(databaseName, "Products");
List<Product> productsList = new List<Product>();
CacheItemRemovedCallback productRefresh = new CacheItemRemovedCallback(RefreshProducts);
HttpRuntime.Cache.Insert("Products", productsList, depProducts, dt, Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable, productRefresh);
コールバック関数 RefreshProducts でデータベースからデータをリロードします。
何らかの理由で、テーブルのデータを変更するときにコールバック関数を呼び出すことができません。実行時エラーは発生しません。AspNet_SqlCacheQueryRegisteredTablesStoredProcedure から、テーブルのキャッシュが有効になっていることがわかります。sqldependency をファイルの依存関係に置き換えて、残りのコードをテストしました。ファイルを変更すると、コールバック関数がすぐに呼び出されたので、私の間違いはおそらく sqlcachedependency の設定にあります。
ありがとう