Unwanted ASP.Net MVC3 server side caching

432 Views Asked by At

I'm working on an MVC3 app and I've come across an issue with objects being cached unintentionally. My code is creating objects from calls to a separate custom business logic dll. This business logic dll gets data from a database. After I change data in the database, I'm still seeing the old data, even after closing my browser and re-running the application. It's not a browser caching issue because I can see it when I'm debugging in the development environment.

In development, if I stop the asp.net development server, then re-run the app, I get the new data. In IIS, if I restart the website, I get the new data.

Any idea why asp.net is caching and re-using these objects, even after they have gone out of scope?

The business logic dll does have some caching built into it, so maybe that's the main issue. In that case, I guess the question is whether there is some way I can tell asp.net to wipe out the objects once the session is over.

2

There are 2 best solutions below

0
On

There's no caching by default in ASP.NET MVC3, at least no caching of data. Make sure your IIS settings are correct and you don't accidentally use the OutputCacheAttribute.

As for caching in the business layer: I've seen at least three caching-related problems in the last two days. Keep in mind: Caching is tricky, and so are static variables. If it's not necessary, don't do it. Caching is extremely powerful, but it's also dangerous. That is also true for the beforementioned OutputCacheAttribute.

0
On

It sounds to me like you're creating your data context statically, rather than creating a new one and destroying it after ever request. This is a bad thing to do for a lot of reasons.

When you say that business layer has "some cacheing", what does that mean? How are you cacheing?