2011-11-30 24 views
0

我正在研究一个MVC3应用程序,并且遇到无意中缓存对象的问题。 我的代码是从调用创建对象到一个单独的自定义业务逻辑DLL。 此业务逻辑DLL从数据库中获取数据。 在我更改数据库中的数据后,即使在关闭浏览器并重新运行应用程序后,我仍然看到旧数据。这不是浏览器缓存问题,因为我在开发环境中进行调试时可以看到它。不需要的ASP.Net MVC3服务器端缓存

在开发中,如果我停止了asp.net开发服务器,然后重新运行应用程序,我会得到新的数据。 在IIS中,如果我重新启动网站,我会得到新的数据。

任何想法为什么asp.net缓存和重新使用这些对象,即使他们已经超出了范围?

业务逻辑DLL确实有一些内置的缓存,所以也许这是主要问题。在这种情况下,我想问题是,是否有某种方法可以告诉asp.net在会话结束后清除对象。

回答

1

ASP.NET MVC3默认没有缓存,至少没有缓存数据。确保你的IIS设置是正确的,并且你不会意外地使用OutputCacheAttribute

至于业务层中的缓存:在过去两天里我看到至少有三个与缓存相关的问题。请记住:缓存很棘手,静态变量也是如此。如果没有必要,不要这样做。缓存功能非常强大,但也很危险。对于前面提到的OutputCacheAttribute也是如此。

0

这听起来像你正在静态地创建你的数据上下文,而不是创建一个新的并在请求后摧毁它。由于很多原因,这是一件坏事。

当你说业务层有“缓存”时,这是什么意思?你如何缓存?