我正在使用 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");
}
缓存在站点地图的根页面上工作正常。但是,当缓存持续时间用完并且从更深层次调用操作方法时,不会返回站点地图。当我禁用安全修整或输出缓存时,它在所有级别都可以正常工作。
当授权数据不可用并因此返回损坏的站点地图时,是否有可能调用返回导航栏的操作方法?