2011-01-26 17 views
2

これはちょっと変です。私は非常にシンプルなサイトマップ持って(デバッグのために、この単純さに縮小する - ライブバージョンがはるかに複雑である):MvcSiteMapProviderが単純なMVC.SiteMapファイルで動作しない

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> 

私はページをロードしようとすると、私は次のエラーを取得します

奇妙なことに、なぜ「あなたの新しい家を買うのか」ノードを削除すれば、それは機能します。また、以下の作品だけで罰金と負荷私の動的なノードのすべて:

<?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

これは、そのURLがそのWhyBuyノードと他のいくつかのURLと同じである可能性が高いことを意味します。ルーティングを投稿することができますか?

+0

私はそれも考えて、私のルートをチェックしましたが、それらはすべてユニークです。これは、「なぜあなたの新しい家を買うのか」ノードがどこに置かれても、余分なノードが何であっても発生します。私はちょうどデモ目的のためにそれを選んだ。 – Scott

+0

@Scott Schluer - Hrm、そのようなものはかなり確かです。私はこれまでにこれに遭遇し、それが問題でした。内部的にMvcSitemapがcontroller_action_titleインデックスなどでキーをキーする別のデュプリケートの問題があります。おそらくそれは問題ですか?私はまだあなたのルートが問題であると確信しています。 – jfar

+0

私はもう一度すべてを実行します、多分もっと慎重に、私は何かを見つけることができないかどうかを確認します。奇妙なことは、そのノードが何であっても、 "ホーム"と1つのセカンダリノードだけでこれを実行していることです。 Thx助けのために、私はもう少しそれをチェックするチャンスがあったときに返信します。 – Scott

関連する問題