MvcSiteMapProvider似乎实现了自动缓存。是否有禁用缓存的机制?我们已经编写了自定义缓存例程,我想通过这些例程来运行它,而不是依赖于任何内置的缓存机制。
发布于 2012-02-12 05:31:01
尝试在渲染菜单或站点地图之前调用刷新。
<% var sm = Html.MvcSiteMap();
((MvcSiteMapProvider.DefaultSiteMapProvider)sm.Provider).Refresh(); %>
....
<%: sm.Menu(0, 1) %>
发布于 2013-08-18 18:04:45
在MvcSiteMapProvider v4中,缓存现在可以扩展或替换为您自己的实现。看看我写的下面这篇博文。
MvcSiteMapProvider 4.0 - Extending the Cache
在幕后,它现在使用System.Runtime.Caching.ObjectCache,这是一个抽象类,可以由您选择的缓存管理器替换。
发布于 2011-01-25 03:17:46
查看源代码时,始终会在构建站点地图时创建一个缓存项,并将其存储在HttpContext.Current.Cache
中。此缓存项的生存期通过configuration cacheDuration
中的属性进行配置。如果配置中省略了此属性,则默认为5。请尝试将该配置属性设置为0。
<siteMap defaultProvider="MvcSiteMapProvider" enabled="true">
<providers>
<clear />
<add name="MvcSiteMapProvider"
type="MvcSiteMapProvider.DefaultSiteMapProvider, MvcSiteMapProvider"
cacheDuration="5" />
</providers>
</siteMap>
https://stackoverflow.com/questions/4785935
复制相似问题