保持表缓存在ASP.NET项目中的服务器上

时间:2010-03-07 06:15:48

标签: asp.net vb.net

我有一个ASP.NET项目,它是数据库的前端。除了大表之外,DB还包含一些小表,以帮助规范化具有常用值的较大表。我有一个VB.NET项目,它使用“共享”(即C#中的“静态”)成员变量将较小的表加载到内存中,并使用它们。我有一个调用加载Global.asax中的表 - Application_Start。这有效一段时间了。也就是说,Application_Start在我第一次运行项目时运行,加载缓存的值,并将它们正确地保存在内存中一段时间​​。

我所看到的(通过本地托管的Visual Studio 2008调试器运行我的项目时)是:

A)Application_Start代码将运行多次。不是连续,但在用户导航到其他一些页面后,我会看到(我的断点)另一个初始化缓存的调用,来自Application_Start。是预期的吗?

B)初始化缓存时设置为True的“Shared”变量现在再次为False(这应该仅在首次加载类时发生)。同样,所有被追逐的数据都不再存在。也就是说,看起来VB正在卸载所有共享成员。这是预期的吗?

如果这些是预期的行为,有没有办法做我想要的?代码位于其他(非ASP.NET)项目也使用的模块中,并且似乎对它们正常工作。我宁愿不必为ASP.NET特有的东西复制这个功能,但想知道我的选择是什么。谢谢你的任何建议。

1 个答案:

答案 0 :(得分:0)

以下是您可能会对Caching Data at Application Startup有所帮助的文章。这听起来好像你正在做的一切正确,但Application_Start应该只被调用一次,除非发生一些重新启动应用程序池的外部更改,但在这种情况下,我认为你会从调试器中分离出来(假设你已连接到app你的asp.net应用程序的池进程。)