0

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

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

知道为什么 asp.net 会缓存和重用这些对象,即使它们超出了范围?

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

4

2 回答 2

1

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

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

于 2011-11-30T16:22:26.247 回答
0

在我看来,您是在静态创建数据上下文,而不是创建一个新的上下文并在请求后销毁它。由于很多原因,这是一件坏事。

当您说业务层具有“一些缓存”时,这是什么意思?你是怎么缓存的?

于 2011-11-30T16:30:36.423 回答