Так что это немного странно. У меня ОЧЕНЬ простая карта сайта (уменьшена до этой простоты для отладки - живая версия намного сложнее):
<?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>
Когда я пытаюсь загрузить страницу, я получаю следующую ошибку:
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="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, который включает поставщиков динамических узлов, он снова сломается. Любая помощь в этом?