【问题标题】:Cache invalidation notification SqlCacheDependency缓存失效通知SqlCacheDependency
【发布时间】:2011-06-28 05:36:04
【问题描述】:

我正在尝试为我的 ASP.NET 应用程序(ASP.NET 3.5、SQL 2008)中的一些参考数据创建 SQL 缓存依赖项。我使用 aspnet_regiis 实用程序为我的数据库和几个表启用了 sql 缓存。我已经在 web.config 中创建了所需的 sqlcachedependency 条目。我在 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。

谢谢

【问题讨论】:

    标签: asp.net sqlcachedependency


    【解决方案1】:

    错误出现在 MS SQL 存储过程 dbo.AspNet_SqlCacheRegisterTableStoredProcedure 和 dbo.AspNet_SqlCacheUnRegisterTableStoredProcedure 中。这些存储过程为 SQL 缓存监视注册和取消注册表,但仅适用于默认模式中的表。我的表位于不同的架构中,因此未正确创建触发器。我修改了这两个存储过程来处理非模式的表,问题解决了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-28
      • 2018-12-28
      • 2015-04-29
      • 1970-01-01
      • 2015-07-21
      • 2017-09-08
      • 2014-08-03
      相关资源
      最近更新 更多