Domanda

Quindi questo è un po 'strano. Ho una semplice mappa del sito (ridotto a questa semplicità per il debug - versione live è molto più complessa):

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

Quando provo a caricare la pagina, ottengo il seguente errore:

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 

La strana è che se mi tolgo la "Perché acquistare la tua nuova casa" nodo, funziona. Inoltre, il seguente funziona bene e carica tutti i miei nodi dinamici:

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

Sembra essere solo quando aggiungo in nodi molto semplicistiche che sto ricevendo questo errore di chiave duplicata, ma se si guarda al mio campione prima XML, non c'è possibile chiave duplicata. Se aggiungo che "Perché acquistare la tua nuova casa" nodo alla mia l'ultimo campione XML che include i fornitori di nodo dinamica, si rompe di nuovo. Qualsiasi aiuto su questo?

È stato utile?

Soluzione 2

Così è finito per essere il fatto che avevo capitalizzato "Controller" e gli attributi "Azione" nel codice XML. Che stava causando tutti i nodi a cadere al mio percorso "pigliatutto", in modo tecnicamente tutti i miei nodi della mappa del sito abbinati un unico percorso.

Grrr ....

Altri suggerimenti

Questo probabilmente significa che l'URL è lo stesso per quel nodo WhyBuy e di alcuni altri URL. Forse si potrebbe pubblicare il tuo percorso?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top