2

我正在尝试为我的 ASP.NET 应用程序(ASP.NET 3.5、SQL 2008)中的一些参考数据创建 SQL 缓存依赖项。我使用 aspnet_regiis 实用程序为我的数据库和几个表启用了 sql 缓存。我已经在 web.config 中创建了所需的 sqlcachedependency 条目。我在 application_start 事件中添加了以下代码

日期时间 dt = 日期时间。现在;

            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。

谢谢

4

1 回答 1

1

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

于 2011-06-29T15:55:06.427 回答