Вопрос

Так что это немного странно. У меня очень простая карта сайта (сводится к этой простоте для отладки - живая версия намного сложнее):

<?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, который включает в себя поставщиков динамических узлов, он снова ломается. Любая помощь в этом?

Это было полезно?

Решение 2

Таким образом, в итоге это стало тем фактом, что я заработал атрибуты «контроллер» и «действия» в XML. Это заставляло все узлы упасть на мой «ловкий» маршрут, так что технически все узлы моей карты сайта соответствуют одному маршруту.

Grrr ....

Другие советы

Это, скорее всего, означает, что URL одинаков для этого узла WhyBuy и некоторых других URL. Может, вы могли бы опубликовать свою маршрутизацию?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top