gpt4 book ai didi

asp.net-mvc - MvcSiteMapProvider 在页面渲染时未准备好,缓存问题?

转载 作者:行者123 更新时间:2023-12-04 20:49:07 30 4
gpt4 key购买 nike

tl;博士: 来自 MvcSiteMapProvider 的菜单有时无法在应用程序重新联机后呈现自身,即使代码运行并且在页面刷新后呈现菜单也是如此。

我在 ASP.NET MVC 3 项目中使用 MvcSiteMapProvider,偶尔在将应用程序从离线切换到在线后(通过将 App_Offline.htm 文件插入服务器的根目录并将其删除),菜单将不会呈现任何内容,直到页面被刷新。

我正在使用自定义 DynamicNodeProvider 从数据库中查询菜单项,然后呈现菜单。在调试时,我可以看到这段代码确实在页面加载之前运行,但页面上没有呈现菜单。我将缓存设置为几个小时,并且正在使用自定义缓存键以允许在某些操作后失效。

不幸的是,我无法始终如一地重现此错误。但是,如果我在 DynamicNodeProvider 的顶部添加一个 sleep ,我可以让它更频繁地重现——它会在大约 60-70% 的时间里失败, sleep 时间超过 30 秒。到目前为止,我最好的猜测是它与缓存机制有关,因为将我的缓存持续时间设置为 0 似乎使它没有问题,并且菜单总是弹出。但是,很难确定,因为问题很难确定。由于性能拖累,将其保留为 0 将不是一个可接受的解决方案。

这个问题的根本原因可能是什么?有没有人见过这种行为或有解决方法?

最佳答案

MvcSiteMapProvider 不时被 ASP.NET SiteMapProvider 的线程模型所困扰,尤其是在具有较大的站点地图定义时。目前没有针对这种行为的解决方法,但我计划进行重写(并放弃 ASP.NET SiteMapProvider 依赖项)以使其在恶劣条件下更加稳定。

关于asp.net-mvc - MvcSiteMapProvider 在页面渲染时未准备好,缓存问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12750382/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com