C# MvcSiteMapProvider-菜单间歇性消失

C# MvcSiteMapProvider-菜单间歇性消失,c#,asp.net-mvc-3,mvcsitemapprovider,C#,Asp.net Mvc 3,Mvcsitemapprovider,我用的是Maarten Balliauw的 我使用助手显示主导航和面包屑。我不时地注意到,它们完全从渲染页面中消失 在本地环境中,我必须重建项目,并在浏览器中导航到当前页面以外的位置,才能将它们取回。在生产中,我发现我必须重新上传网站的DLL。这些修复本身只能取得好坏参半的成功 有一个轻微的模式,但尚未确认-当您编辑或上载视图时,会出现该问题 任何帮助都将不胜感激。以下是我的一些代码: 站点地图文件的一部分: <mvcSiteMapNode title="Home" controlle

我用的是Maarten Balliauw的

我使用助手显示主导航和面包屑。我不时地注意到,它们完全从渲染页面中消失

在本地环境中,我必须重建项目,并在浏览器中导航到当前页面以外的位置,才能将它们取回。在生产中,我发现我必须重新上传网站的DLL。这些修复本身只能取得好坏参半的成功

有一个轻微的模式,但尚未确认-当您编辑或上载视图时,会出现该问题

任何帮助都将不胜感激。以下是我的一些代码:

站点地图文件的一部分:

  <mvcSiteMapNode title="Home" controller="Home" action="Index" key="home">
    <mvcSiteMapNode title="About us" controller="about" action="index" key="about">
      <mvcSiteMapNode title="Our Approach" controller="about" action="approach" url="/about/our-approach" imageUrl="/content/images/ourApproachNavImg.jpg" />
    </mvcSiteMapNode>

    <mvcSiteMapNode title="News" controller="news" action="index" key="news" showSubNav="false">
      <mvcSiteMapNode dynamicNodeProvider="XXX.Helpers.NewsItemDynamicNodeProvider, KDC" title="" />
    </mvcSiteMapNode>
  </mvcSiteMapNode>
dynamicNodeProvider:

public override IEnumerable<DynamicNode> GetDynamicNodeCollection()
        {
            var returnValue = new List<DynamicNode>();
            var newsItemService = DependencyResolver.Current.GetService<INewsItemService>();

            foreach (var item in newsItemService.GetAll(true, true))
            {
                DynamicNode node = new DynamicNode();
                node.Title = item.Title;
                node.Action = "detail";
                node.RouteValues.Add("url", item.Url);
                returnValue.Add(node); 
            }

            return returnValue;
        }

web.config中的MvcSiteMapProvider符合标准且未更改。

MvcSiteMapProvider v3有许多线程和缓存问题,可能会导致类似问题。不再有这些问题,因为它现在有更好的线程安全性,缓存的站点地图是只读的,这样一个用户的导航就不会影响其他用户。

我在MVC4上使用v4,我仍然注意到同样的问题。这是一个新引入的错误,或者这个答案实际上不是正确的答案?你的菜单和面包屑消失了,还是根本没有出现?如果v4随机消失,这将是自v4发布以来首次出现这种情况。请构建一个展示该行为的小型演示项目,并在@Github打开一个新问题:
public override IEnumerable<DynamicNode> GetDynamicNodeCollection()
        {
            var returnValue = new List<DynamicNode>();
            var newsItemService = DependencyResolver.Current.GetService<INewsItemService>();

            foreach (var item in newsItemService.GetAll(true, true))
            {
                DynamicNode node = new DynamicNode();
                node.Title = item.Title;
                node.Action = "detail";
                node.RouteValues.Add("url", item.Url);
                returnValue.Add(node); 
            }

            return returnValue;
        }