【发布时间】:2015-12-15 16:46:06
【问题描述】:
我正在使用 MvcSiteMapProvider Html Helper 创建导航栏。导航栏的内容取决于访问者的权限,因此我使用安全修剪来仅显示该人被授权的内容。为了提高性能,我正在尝试缓存此导航栏。
导航栏在局部视图中创建,内容如下:
@Html.MvcSiteMap().Menu("MenuHelper", new { name = "MainMenu" })
在布局文件中,它被一个返回局部视图的动作方法调用:
[System.Web.Mvc.OutputCache(Duration = 10, VaryByCustom = "User")]
[ChildActionOnly]
public ActionResult MainMenu()
{
return PartialView("MainMenu");
}
缓存在站点地图的根页面上可以正常工作。但是,当缓存持续时间用完并且从更深层次调用操作方法时,不会返回站点地图。 当我禁用安全修剪或输出缓存时,它在所有级别都可以正常工作。
是否有可能在授权数据不可用时调用返回导航栏的操作方法并因此返回损坏的站点地图?
【问题讨论】:
标签: asp.net-mvc caching outputcache mvcsitemapprovider security-trimming