When using either the MemoryCache.Default or my own MemoryCache after the PollingInterval (default of 2 minutes) the cache is in the disposed state (_disposed=1 ) on examination in the debugger. Setting the PollingInterval longer or shorter means the cache works for more or less time. In its disposed state the cache basically functions as if it is constantly empty hence no cache.
Before the PollingInterval however the cache works as expected.
This only seems to manifest itself when using Integrated Managed Pipeline Mode in IIS7. When on IIS6 or running in Classic mode under IIS7 I did not experience this issue and I found this due to a degradation in performance going from old server to a new server.
A number of people seem to have noticed this but I don't see a bug for this issue here.