2011-01-26 2 views
2

이렇게 약간 이상합니다. 나는 아주 간단한 사이트 맵이 (디버깅이 단순 감소를 - 라이브 버전은 훨씬 더 복잡하다) :MVC.SiteMap 파일에서 MvcSiteMapProvider가 작동하지 않습니다.

An item with the same key has already been added. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.ArgumentException: An item with the same key has already been added. 

Source Error: 

Line 75:    else 
Line 76:    { 
Line 77:     returnValue = UrlHelper.Action(action, controller, new RouteValueDictionary(routeValues)); 
Line 78:    } 
Line 79: 


Source File: C:\sitemap\Branches\3.0.0\MvcSiteMapProvider\MvcSiteMapProvider\DefaultSiteMapNodeUrlResolver.cs Line: 77 
:

<?xml version="1.0" encoding="utf-8" ?> 
<mvcSiteMap xmlns="http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-3.0" enableLocalization="false"> 
    <mvcSiteMapNode title="Home" controller="Home" action="Index" changeFrequency="Always" updatePriority="Normal"> 
    <mvcSiteMapNode title="Why Buy Your New Home" Controller="WhyBuyYourNewHome" Action="Index" /> 
    </mvcSiteMapNode> 
</mvcSiteMap> 

내가 페이지를로드 할 때, 나는 다음과 같은 오류가 발생합니다

이상한 점은 "Why Buy Your New Home"노드를 제거하면 작동한다는 것입니다. 또한, 다음과 같은 잘 작동로드 내 동적 노드의 모든 :

<?xml version="1.0" encoding="utf-8" ?> 
    <mvcSiteMap xmlns="http://mvcsitemap.codeplex.com/schemas/MvcSiteMap-File-3.0" enableLocalization="true"> 
     <mvcSiteMapNode title="Home" controller="Home" action="Index" changeFrequency="Always" updatePriority="Normal"> 
     <mvcSiteMapNode title="Find Your New Home" controller="FindYourNewHome" action="Index"> 
      <mvcSiteMapNode title="Markets" action="Market" updatePriority="Critical" dynamicNodeProvider="MyProject.MVC.Extensions.SiteMap.SiteMapMarketNodeProvider, MyProject.MVC.Extensions"> 
      <mvcSiteMapNode title="Communities" action="Community" updatePriority="High" dynamicNodeProvider="MyProject.MVC.Extensions.SiteMap.SiteMapCommunityNodeProvider, MyProject.MVC.Extensions"> 
       <mvcSiteMapNode title="Driving Directions" action="DrivingDirections" updatePriority="High" dynamicNodeProvider="MyProject.MVC.Extensions.SiteMap.SiteMapDrivingDirectionsNodeProvider, MyProject.MVC.Extensions" /> 
       <mvcSiteMapNode title="Floorplans" action="Floorplan" updatePriority="High" dynamicNodeProvider="MyProject.MVC.Extensions.SiteMap.SiteMapFloorplanNodeProvider, MyProject.MVC.Extensions" />   
      </mvcSiteMapNode> 
      </mvcSiteMapNode> 
     </mvcSiteMapNode> 
     </mvcSiteMapNode> 
</mvcSiteMap> 

그것은 단지 것 당신이 보면 내가이 중복 키 오류가있어 매우 단순한 노드에 추가, 아직 때 일 내 첫 번째 XML 샘플에는 중복 키가 없습니다. "왜 새 집 구입"노드를 동적 노드 공급자가 포함 된 마지막 XML 샘플에 추가하면 다시 중단됩니다. 이거 도와 줘?

답변

1

그래서 결국 XML에서 "컨트롤러"및 "액션"속성을 대문자로 사용하게되었습니다. 모든 노드가 내 "캐롤"경로로 넘어져서 기술적으로 모든 사이트 맵 노드가 단일 경로와 일치하게되었습니다.

그루브 ....

1

이것은 아마도 WhyBuy 노드와 다른 URL에 대한 URL이 동일하다는 것을 의미합니다. 라우팅을 게시 할 수 있습니까?

+0

나는 그걸 생각하고 내 경로를 확인했지만 모두 독특합니다. 이것은 "왜 새 집을 사야합니까?"노드가 어디에 추가 노드를 넣었는지에 관계없이 발생합니다. 방금 데모 목적으로 데리러 왔어요. – Scott

+0

@Scott Schluer - Hrm, 그게 뭐니 뭐니? 나는 전에 이것에 부딪 쳤고 그 것이 문제였다. 내부적으로 MvcSitemap이 controller_action_title 인덱스 등으로 키를 처리하는 또 다른 주요 문제가 있습니다. 어쩌면 그게 문제 야? 나는 여전히 그 친구의 길을 잘 알고있어 당신의 길은 문제 다. – jfar

+0

나는 한 번 더 다가와서, 조금 더 조심스럽게 다룰 것이고, 나는 무언가를 찾을 수 없는지 보게 될 것이다. 이상한 것은 노드가 무엇이든 관계없이 "홈"과 하나의 보조 노드만으로이 작업을 수행한다는 것입니다. 도움을 주신 Thx, 좀 더 확인해 볼 기회가있을 때 회신 해 드리겠습니다. – Scott

관련 문제