2012-12-13 5 views
1

Maarten Balliauw가 ASP.NET MVC SiteMapProvider을 사용 중입니다.MvcSiteMapProvider - 간헐적으로 메뉴가 사라집니다.

헬퍼를 사용하여 기본 탐색 및 이동 경로를 표시합니다. 가끔은 렌더링 된 페이지에서 완전히 사라지는 것을 보았습니다.

로컬 환경에서 프로젝트를 다시 작성하고 다시 브라우저에있는 현재 페이지에서 탐색해야합니다. 제작 과정에서 사이트 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> 

헬퍼 :

@Html.MvcSiteMap().Menu(false, true, false) 
@Html.MvcSiteMap().SiteMapPath() 

dynamicNodeProvider : Web.config의에서

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; 
     } 

MvcSiteMapProvider 표준에 따라 여기 내 코드의 일부입니다 변경되지 않았습니다.

답변

0

MvcSiteMapProvider v3에는 이와 같은 문제를 일으킬 수있는 많은 스레딩 및 캐시 문제가있었습니다. MvcSiteMapProvider v4에는 더 이상 스레드 안전성이 없으며 캐싱 된 사이트 맵이 읽기 전용으로 만들어져 한 사용자의 탐색이 다른 사용자에게 영향을 줄 수 없기 때문에 이러한 문제가 더 이상 발생하지 않습니다.

+0

MVC4에서 v4를 사용하고 있으며 여전히 동일한 문제를 관찰하고 있습니다. 이것은 새로 소개 된 오류이거나이 대답은 실제로 정답이 아닙니까? – Dorival

+0

메뉴와 빵 부스러기가 사라지거나 전혀 나타나지 않습니까? 이는 v4가 무작위로 사라지는 경우 v4가 출시 된 이후 발생한 첫 번째 보고서입니다. 문제가되는 작은 데모 프로젝트를 만들고 @ Github : https://github.com/maartenba/MvcSiteMapProvider/issues/new에서 새 문제를 만드십시오. – NightOwl888

관련 문제