7

I use the web.sitemap of my ASP.net application to help build my navigation links. This way if my navigation changes, I update the web.sitemap, and it builds my navigation automatically. However since upgrading from ASP.net 3.5 to 4.0 I'm having problems related to my web.sitemap file. After upgrading to ASP.net 4.0 the links generated from my web.sitemap sometimes have strange characters inserted after the domain name (link broken on purpose because my limit is 2):

http //www.cheatsheetwarroom.com/(A(jUhJqoX4zAEkAAAAN2VlZTM2N2MtOWU5Mi00OWUyLTllZTUtMTY4MDY3ZGM2MTM2hMR-oHFFNS-DvXxMDadonaHu8pk1))/fantasy-football/nfl/free/rankings/offense/running-backs.aspx

You can see this by hovering over links on my Sitemap page (if its broken while you happen to view it).

The problem caused by this is that the following method (which takes in the url of a sitemap node as its parameter) begins to return NULL for any nodes throughout my application, even if I point to nodes that I know are in my web.sitemap file:

SiteMapNode myNode = SiteMap.Provider.FindSiteMapNode("~/fantasy-football/nfl/free/rankings/player-rankings.aspx");

This is presumably because the funky urls generated by the web.sitemap no longer match the explicit nodes I'm looking for. Since many of my menu controls are based on comparing the current page to nodes in the web.sitemap file, much of my navigation breaks. When reverting back to ASP.net 3.5, everything works again.

I found this suggested solution on Stack Overflow which suggests the problem is related to 'cookieless' mode. However, as you can see in my web.config below I'm forcing the use of cookies. So, either the suggested fix does not entirely work or I'm not correctly forcing the use of cookies. I should note that updating the web.config file (in any form or fashion) does sometimes momentarily fix the problem, only to have it surface again.

My web.config

<?xml version="1.0"?>

<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->

<configuration>

  <!-- Note Custom CSWR Section -->
  <configSections>
    <section name="cheatSheetWarRoom" type="BP.CheatSheetWarRoom.CheatSheetWarRoomSection"/>
  </configSections>

  <!--Custom Section-->
  <cheatSheetWarRoom defaultConnectionStringName="LocalSqlServer" enableAdvertisements="true" applicationState="prod">
    <contactForm mailTo="admin@cheatsheetwarroom.com" mailCC="bperniciaro@gmail.com"/>
    <sheets pageSize="25" providerType="BP.CheatSheetWarRoom.DAL.SqlClient.SqlSheetsProvider" enableCaching="true" cacheDuration="300" defaultSportCode="FOO" defaultQBsPerSheet="35" defaultRBsPerSheet="50" defaultWRsPerSheet="50" defaultTEsPerSheet="35" defaultKsPerSheet="32" defaultDEFsPerSheet="32"/>
  </cheatSheetWarRoom>

  <!--Point to external connection string-->
  <connectionStrings configSource="configuration\connstrings\ConnStringsProd.config"/>

  <!--This ensures this section isn't read by child apps-->
  <location path="." inheritInChildApplications="false">


    <system.web>

      <healthMonitoring enabled="true">
        <eventMappings>
          <clear/>
          <!-- Log ALL error events -->
          <add name="All Errors" type="System.Web.Management.WebBaseErrorEvent" startEventCode="0" endEventCode="2147483647"/>
          <!-- Log application startup/shutdown events -->
          <!--<add name="Application Events" type="System.Web.Management.WebApplicationLifetimeEvent" startEventCode="0" endEventCode="2147483647"/>-->
        </eventMappings>
        <providers>
          <clear/>
          <!-- Provide any customized SqlWebEventProvider information here (such as a different connection string name value -->
          <add connectionStringName="LocalSqlServer" maxEventDetailsLength="1073741823" buffer="false" name="SqlWebEventProvider" type="System.Web.Management.SqlWebEventProvider"/>
        </providers>
        <rules>
          <clear/>
          <add name="All Errors Default" eventName="All Errors" provider="SqlWebEventProvider" profile="Default" minInstances="1" maxLimit="Infinite" minInterval="00:00:00" custom=""/>
          <!--<add name="Application Events Default" eventName="Application Events" provider="SqlWebEventProvider" profile="Default" minInstances="1" maxLimit="Infinite" minInterval="00:00:00" custom=""/>-->
        </rules>
      </healthMonitoring>

      <!--Session Timeout-->
      <sessionState timeout="60"/>

      <!-- Autentication -->
      <authentication mode="Forms">
        <forms name="CSWRFORMAUTH" protection="All" path="/" loginUrl="~/error/AccessDenied.aspx" timeout="2592000" cookieless="UseCookies"/>
      </authentication>

      <!-- Roles -->
      <roleManager enabled="true"/>

      <!--Membership-->
      <membership defaultProvider="CSWR_MembershipProvider" userIsOnlineTimeWindow="15">
        <providers>
          <add name="CSWR_MembershipProvider" connectionStringName="LocalSqlServer" applicationName="/" enablePasswordRetrieval="true" enablePasswordReset="true" requiresQuestionAndAnswer="true" requiresUniqueEmail="true" passwordFormat="Encrypted" maxInvalidPasswordAttempts="5" passwordAttemptWindow="10" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral,&#xA;             PublicKeyToken=b03f5f7f11d50a3a"/>
        </providers>
      </membership>

      <!--Anonymous Users-->
      <anonymousIdentification cookieless="UseCookies" enabled="true"/>

      <!--Profile Info-->
      <profile defaultProvider="CSWR_ProfileProvider">
        <providers>
          <add name="CSWR_ProfileProvider" connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
        </providers>
        <properties>
          <add name="FirstName" type="String"/>
          <add name="FavoriteTeam" type="String"/>
          <add name="EmailNotifications" type="Bool" defaultValue="true"/>
          <group name="SiteSettings">
            <add name="LastFootballCheatSheetID" type="Integer"/>
            <add name="LastRacingCheatSheetID" type="Integer"/>
            <add name="FiguredOutReordering" type="Boolean" defaultValue="false"/>
          </group>
        </properties>
      </profile>

      <!-- Keys for encrypting and decrypting passwords, generated at the website www.aspnetresources.com/tools/keycreator.aspx -->
      <machineKey validationKey="B8C7F65D22B69591SDFSDFSDF68331064D46D3B43F7DB71F6AA6EE854475E10B92C030D7D41D75B3AB50F1B7B0F85126E68FFFE1F0114B825E6DD34D284D10" decryptionKey="3B168CB07DFD5F5FB7EAFDSDFDSSDF8BD41ABFB37D4537" validation="SHA1"/>

      <!-- Custom Error Pages -->
      <customErrors mode="Off" defaultRedirect="~/Error/Error.aspx">
        <error statusCode="408" redirect="~/Error/Error.aspx?code=408"/>
        <error statusCode="505" redirect="~/Error/Error.aspx?code=505"/>
      </customErrors>

      <!--Sitemap-->
      <siteMap defaultProvider="CSWR_SiteMapProvider" enabled="true">
        <providers>
          <add name="CSWR_SiteMapProvider" type="System.Web.XmlSiteMapProvider" siteMapFile="web.sitemap" securityTrimmingEnabled="true"/>
        </providers>
      </siteMap>

      <!-- Pages -->
      <pages theme="Web20" masterPageFile="~/MasterPages/Web20Master/Frame.master">
        <controls>
          <add tagPrefix="captcha" namespace="WebControlCaptcha" assembly="WebControlCaptcha"/>
          <add namespace="AjaxControlToolkit" assembly="AjaxControlToolkit" tagPrefix="ajaxToolkit"/>
          <add tagPrefix="cswr" src="~/usercontrols/HoverImage.ascx" tagName="HoverImage"/>
          <add tagPrefix="cswr" src="~/usercontrols/SEOPager.ascx" tagName="SEOPager"/>
          <add tagPrefix="cswr" src="~/usercontrols/UserProfile.ascx" tagName="UserProfile"/>
          <add tagPrefix="cswr" src="~/usercontrols/AdGenerator.aspx" tagName="AdGenerator"/>
          <add tagPrefix="cswr" src="~/usercontrols/Football/PlayerRankingItemTemplate.aspx" tagName="PlayerRankingItemTemplate"/>
          <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
          <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        </controls>
      </pages>

      <compilation debug="false" targetFramework="4.0" />


      <!--<httpHandlers>
        <add verb="GET" path="CaptchaImage.aspx" type="WebControlCaptcha.CaptchaImageHandler, WebControlCaptcha"/>
      </httpHandlers>-->
  </system.web>
</location>

  <location path="EditProfile.aspx">
    <system.web>
      <authorization>
        <allow roles="Member"/>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>

  <system.net>
    <mailSettings>
      <smtp deliveryMethod="Network" from="admin@CheatSheetWarRoom.com">
        <network defaultCredentials="true" host="localhost" port="25"/>
      </smtp>
    </mailSettings>
  </system.net>


  <system.webServer>
     <modules runAllManagedModulesForAllRequests="true"/>
    <handlers>
      <add name ="CaptchaImage" verb="GET" path="CaptchaImage.aspx" type="WebControlCaptcha.CaptchaImageHandler, WebControlCaptcha"/>
    </handlers>
  </system.webServer>

</configuration>

My web.sitemap

<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >

    <siteMapNode url="~/default.aspx" title="Fantasy Cheat Sheets"  description="Create customized fantasy draft cheat sheets for various fantasy sports including NFL football and NASCAR racing, or free.">

    <siteMapNode url="~/register.aspx" title="Register"  description="Register to unlock the full power of CheatSheetWarRoom." />
    <siteMapNode url="~/sitemap.aspx" title="Sitemap" description="View all pages of our website provided as hyperlinks for easy navigation." />
        <siteMapNode url="~/faq.aspx" title="FAQ" description="Get answers to frequently asked questions." />
        <siteMapNode url="~/about.aspx" title="About" description="Read about what drove the creation of our cheat sheet creation tools." />
        <siteMapNode url="~/contact.aspx" title="Contact"  description="Contact us with any queries or suggestions you may have." />
        <siteMapNode url="~/passwordrecovery.aspx" title="Password Recovery"  description="If you've forgot your password, validate yourself and we'll sent it to you." />
        <siteMapNode url="~/editprofile.aspx" title="Edit Profile" description="Edit your personal profile to keep your personal information current." />
        <siteMapNode url="~/admin/Users/UserStats.aspx?" title="Admin" roles="Administrator" description="An entry point into the administration menu." />

    <!-- **************** -->
    <!-- Fantasy Football -->
    <!-- **************** -->

    <siteMapNode url="/FantasyFootball" title="Fantasy Football" description="These pages are relevant to fantasy football." roles="*" link="false">

      <!--Fantasy Football Landing Page-->
      <siteMapNode url="~/fantasy-football/nfl/cheat-sheets.aspx" title="Fantasy Football Cheat Sheets" description="Prepare for your 2011 NFL fantasy football draft by creating customized fantasy football cheat sheets, for free."></siteMapNode>
      <!--Fantasy Football Help-->
      <siteMapNode url="~/fantasy-football/nfl/cheat-sheet-help.aspx" title="Football Cheat Sheet Help" description="Explore all features for creating fantasy football cheat sheets."/>


      <siteMapNode url="~/fantasy-football/nfl/trophies/cheap-trophies.aspx" title="Cheap Fantasy Football Trophies" description="These cheap fantasy football trophies are of the highest quality."></siteMapNode>
      <siteMapNode url="~/fantasy-football/nfl/trophies/funny-trophies.aspx" title="Funny Fantasy Football Trophies" description="Add a comedic touch to your league with a funny fantasy football trophy."></siteMapNode>



      <!--Fantasy Football Cheat Sheet Creation-->
            <siteMapNode  url="/FantasyFootballCreateSheetCreation" title="Fantasy Football Cheat Sheet Creation" description="The creation of cheat sheets." roles="*" link="false">
                <siteMapNode url="~/fantasy-football/nfl/create/custom-sheet.aspx" title="Custom Fantasy Football Cheat Sheet" description="Use this free, custom fantasy football cheat sheet to easily create your NFL fantasy player rankings using drag and drop."></siteMapNode>
        <siteMapNode url="~/fantasy-football/nfl/create/editsheet.aspx" title="Edit Fantasy Football Cheat Sheet" showNode="false"></siteMapNode>
        <siteMapNode url="~/fantasy-football/nfl/create/newsheet.aspx" title="New Fantasy Football Cheat Sheet"></siteMapNode>
        <siteMapNode url="~/fantasy-football/nfl/create/managesheets.aspx" title="Manage Fantasy Football Cheat Sheet"></siteMapNode>
        <siteMapNode url="~/fantasy-football/nfl/create/configureprint.aspx" title="Configure Printable Fantasy Football Cheat Sheet" roles="Member, SupplementalSource, Administrator"></siteMapNode>
      </siteMapNode>  <!-- Close Fantasy Football Cheat Sheet Creation -->

      <!-- Fantasy Football Free -->
      <siteMapNode url="/FantasyFootballFree" title="Free Fantasy Football Resources" roles="*" link="false">


        <!-- Fantasy Football (Offensive) Player Rankings-->
        <siteMapNode url="~/fantasy-football/nfl/free/rankings/player-rankings.aspx" roles="*" title="2011 NFL Player Rankings">
          <siteMapNode url="/FantasyFootballFreeRankingsOffense" title="Offensive Positions" link="false"  roles="*">
            <siteMapNode url="~/fantasy-football/nfl/free/rankings/offense/quarterbacks.aspx" title="Quarterback Rankings" description="View our free quarterback rankings in preparation for your 2011 fantasy football draft." />
            <siteMapNode url="~/fantasy-football/nfl/free/rankings/offense/running-backs.aspx" title="Running Back Rankings" description="View our free running back rankings in preparation for your 2011 fantasy football draft." />
            <siteMapNode url="~/fantasy-football/nfl/free/rankings/offense/wide-receivers.aspx" title="Wide Receiver Rankings" description="View our free wide receiver rankings in preparation for your 2011 fantasy football draft." />
            <siteMapNode url="~/fantasy-football/nfl/free/rankings/offense/tight-ends.aspx" title="Tight End Rankings" description="View our free tight end rankings in preparation for your 2011 fantasy football draft." />
            <siteMapNode url="~/fantasy-football/nfl/free/rankings/offense/kickers.aspx" title="Kicker Rankings" description="View our free kicker rankings in preparation for your 2011 fantasy football draft." />
            <siteMapNode url="~/fantasy-football/nfl/free/rankings/offense/defenses.aspx" title="Defense Rankings" description="View our free defense rankings in preparation for your 2011 fantasy football draft." />
          </siteMapNode>
        </siteMapNode>  <!-- Close Fantasy Football Player Rankings -->

        <!-- Printable Fantasy Football Cheat Sheets-->
        <siteMapNode url="~/fantasy-football/nfl/free/printable/cheat-sheets.aspx" title="Printable Fantasy Football Cheat Sheets" roles="*">
          <siteMapNode url="/FantasyFootballFreePrintableCheatSheetsOffense" title="Offensive Positions" link="false"  roles="*">
            <!--All-in-One-->
            <siteMapNode url="~/fantasy-football/nfl/free/printable/offense/cheat-sheet-with-roster.aspx" title="Printable Fantasy Football Cheat Sheet With Roster" roles="*"/>
            <!--By Position-->
            <siteMapNode url="~/fantasy-football/nfl/free/printable/offense/quarterbacks-cheat-sheet.aspx" title="Printable Quarterbacks Cheat Sheet" roles="*"/>
            <siteMapNode url="~/fantasy-football/nfl/free/printable/offense/running-backs-cheat-sheet.aspx" title="Printable Running Backs Cheat Sheet" roles="*"/>
            <siteMapNode url="~/fantasy-football/nfl/free/printable/offense/wide-receivers-cheat-sheet.aspx" title="Printable Wide Receivers Cheat Sheet" roles="*"/>
            <siteMapNode url="~/fantasy-football/nfl/free/printable/offense/tight-ends-cheat-sheet.aspx" title="Printable Tight Ends Cheat Sheet" roles="*"/>
            <siteMapNode url="~/fantasy-football/nfl/free/printable/offense/kickers-cheat-sheet.aspx" title="Printable Kickers Cheat Sheet" roles="*"/>
            <siteMapNode url="~/fantasy-football/nfl/free/printable/offense/defenses-cheat-sheet.aspx" title="Printable Defenses Cheat Sheet" roles="*"/>
          </siteMapNode> <!-- Close Printable Fantasy Football Cheat Sheets OFFENSE -->
        </siteMapNode>  <!-- Close Printable Fantasy Football Cheat Sheets-->

        <!-- Fantasy Football Links -->
        <siteMapNode url="~/fantasy-football/nfl/free/links.aspx" title="Fantasy Football Links"  description="This page contains links to various fantasy NFL football websites categorized by type." />

      </siteMapNode>  <!-- Close Printable Fantasy Football Free -->

      </siteMapNode>  <!-- Close Fantasy Football -->

    <!-- ************** -->
    <!-- Fantasy Racing -->
    <!-- ************** -->
    <siteMapNode url="/FantasyRacing" title="Fantasy Racing" description="These pages are relevant to fantasy racing." roles="*" link="false">

      <!-- Fantasy Racing Landing Page -->
      <siteMapNode url="~/fantasy-racing/nascar/cheat-sheets.aspx" title="Fantasy Racing Cheat Sheets" description="Prepare for your 2011 NASCAR fantasy racing draft by creating customized fantasy racing cheat sheets, for free."></siteMapNode>
      <siteMapNode url="~/fantasy-racing/nascar/cheat-sheet-help.aspx" title="Racing Cheat Sheet Help" description="Explore all features for creating fantasy racing cheat sheets."/>
      <!-- Fantasy Racing Cheat Sheet Creation -->
      <siteMapNode url="/FantasyRacingCreateSheetCreation" title="Fantasy Racing Cheat Sheet Creation" description="The creation of cheat sheets." roles="*" link="false">
        <siteMapNode url="~/fantasy-racing/nascar/create/custom-sheet.aspx" title="Custom Fantasy Racing Cheat Sheet" description="Use this free, custom fantasy racing cheat sheet to easily create your fantasy NASCAR driver rankings using drag and drop."></siteMapNode>
        <siteMapNode url="~/fantasy-racing/nascar/create/editsheet.aspx" title="Edit Fantasy Racing Cheat Sheet" showNode="false"></siteMapNode>
        <siteMapNode url="~/fantasy-racing/nascar/create/newsheet.aspx" title="New Fantasy Racing Cheat Sheet"></siteMapNode>
        <siteMapNode url="~/fantasy-racing/nascar/create/managesheets.aspx" title="Manage Fantasy Racing Cheat Sheet"></siteMapNode>
      </siteMapNode> <!-- Close Fantasy Racing Cheat Sheet Creation -->

      <!-- Fantasy Racing Free -->
      <siteMapNode url="/FantasyRacingFree" title="Free Fantasy Racing Resources" roles="*" link="false">
        <!-- Links -->
        <siteMapNode url="~/fantasy-racing/nascar/free/links.aspx" title="Fantasy Racing Links" description="This page contains links to various fantasy NASCAR racing websites categorized by type." />
        <!--Fantasy NASCAR Driver Rankings-->
        <siteMapNode url="~/fantasy-racing/nascar/free/rankings/drivers.aspx" title="2011 NASCAR Driver Rankings" description="Use this free, custom fantasy racing cheat sheet to easily create your fantasy NASCAR driver rankings using drag and drop." />
        <!--Free Fantasy NASCAR Cheat Sheets-->
        <siteMapNode url="~/fantasy-racing/nascar/free/printable/drivers-cheat-sheet.aspx" title="Free Printable Fantasy Racing Cheat Sheet" description="This free, printable fantasy racing cheat sheet includes all drivers for the 2011 fantasy NASCAR draft." />
      </siteMapNode> <!-- Close Fantasy Racing Free -->

    </siteMapNode>  <!-- Close Fantasy Racing -->


    <!-- Legal -->
    <siteMapNode title="Legal" roles="*">
            <siteMapNode url="~/Legal/Disclaimer.aspx" title="Disclaimer" description="Read our legal disclaimer to learn about who we are AND AREN'T affiliated with."/>
            <siteMapNode url="~/Legal/PrivacyPolicy.aspx" title="Privacy Policy" description="Your privacy is important to us and we won't share this information."/>
            <siteMapNode url="~/Legal/TermsOfService.aspx" title="Terms of Service" description="Our Terms of Service provide you with rules dictating how you can use our website."/>
        </siteMapNode>  <!--Close Legal-->


    <!--Administrative-->
    <siteMapNode url="/AdminMain" roles="Administrator" title="Admin" showNode="false">

      <siteMapNode url="~/admin/summary.aspx" roles="Administrator" title="Stats" description="">
        <!--Users-->
        <siteMapNode title="Users"  roles="Administrator" url="/Users" description="">
          <siteMapNode url="~/admin/users/manageusers.aspx" roles="Administrator" title="Manage Users"  description="" />
          <siteMapNode url="~/admin/users/edituser.aspx" roles="Administrator" title="Edit User"  description="" />
        </siteMapNode>
        <!--Football-->
        <siteMapNode title="Football" roles="Administrator" url="/Football" description="">
          <siteMapNode url="~/admin/sports/football/sheetsettings.aspx" roles="Administrator" title="Sheet Settings"  description="" />
          <!--Players-->
          <siteMapNode title="Players" roles="Administrator" url="/FootballPlayers" description="">
            <siteMapNode url="~/admin/sports/football/players/manageplayers.aspx" roles="Administrator" title="Manage Players"  description="" />
            <!--Stats-->
            <siteMapNode title="Stats" url="/FootballStats" roles="Administrator"  description="">
              <siteMapNode url="~/admin/sports/football/players/stats/manageplayerseasonstats.aspx" roles="Administrator" title="Manage Player Season Stats" description="" />
              <siteMapNode title="Import" roles="Administrator" description="">
                <siteMapNode url="~/admin/sports/football/players/stats/import/importseasonstats.aspx" roles="Administrator" title="Import Season Stats"  description="" />
                <siteMapNode url="~/admin/sports/football/players/stats/import/mapplayerids.aspx" roles="Administrator" title="Map PlayerIDs"  description="" />
              </siteMapNode>
            </siteMapNode>
          </siteMapNode>
          <!--Supplementals-->
          <siteMapNode title="Supplementals" roles="Administrator" url="/FootballSupplementals"  description="">
            <siteMapNode roles="Administrator" url="~/admin/sports/football/supplementals/managesupplementalsheets.aspx" title="Manage Supplemental Sheets"  description="" />
            <siteMapNode roles="Administrator" url="~/admin/sports/football/supplementals/editsupplementalsheet.aspx" title="Edit Supplemental Sheet"  description="" />
            <siteMapNode roles="Administrator" url="~/admin/sports/football/supplementals/ranksupplementalplayers.aspx" title="Rank Supplemental Players"  description="" />
            <siteMapNode roles="Administrator" url="~/admin/sports/football/supplementals/managesupplementalsources.aspx" title="Manage Supplemental Sources"  description="" />
            <siteMapNode roles="Administrator" url="~/admin/sports/football/supplementals/scraperankings.aspx" title="Scrape Rankings"  description="" />
          </siteMapNode>
        </siteMapNode>
        <!--Racing-->
        <siteMapNode title="Racing" roles="Administrator" url="/Racing" description="">
          <siteMapNode url="~/admin/sports/racing/sheetsettings.aspx" roles="Administrator" title="Sheet Settings"  description="" />
          <!--Drivers-->
          <siteMapNode title="Drivers" roles="Administrator" url="/RacingDrivers" description="">
            <siteMapNode url="~/admin/sports/racing/drivers/managedrivers.aspx" roles="Administrator" title="Manage Drivers"  description="" />
            <!--Stats-->
            <siteMapNode title="Stats" url="/RacingStats" roles="Administrator"  description="">
              <siteMapNode url="~/admin/sports/racing/drivers/stats/managedriverseasonstats.aspx" roles="Administrator" title="Manage Driver Season Stats" description="" />
            </siteMapNode>
          </siteMapNode>
          <!--Supplementals-->
          <siteMapNode title="Supplementals" roles="Administrator" url="/RacingSupplementals"  description="">
            <siteMapNode roles="Administrator" url="~/admin/sports/racing/supplementals/managesupplementalsheets.aspx" title="Manage Racing Supplemental Sheets"  description="" />
            <siteMapNode roles="Administrator" url="~/admin/sports/racing/supplementals/ranksupplementalplayers.aspx" title="Rank Supplemental Players"  description="" />
            <siteMapNode roles="Administrator" url="~/admin/sports/racing/supplementals/editsupplementalsheet.aspx" title="Edit Supplemental Sheet"  description="" />
          </siteMapNode>
        </siteMapNode>  
        <!--Health-->
        <siteMapNode title="Health" roles="Administrator" url="/Health" description="">
          <siteMapNode roles="Administrator"  url="~/admin/health/manageexceptions.aspx" title="Manage Exceptions"  description="" />
        </siteMapNode>
      </siteMapNode>


      </siteMapNode>

        <siteMapNode title="Errors">
        </siteMapNode>

    </siteMapNode>


</siteMap>

I've been chasing around this problem for the greater part of a year so any help would be appreciated.

Community
  • 1
  • 1
bperniciaro
  • 901
  • 2
  • 12
  • 30
  • Trim this post down into a more succinct, complete example. As it stands now, this is a [wall of text](http://uncyclopedia.wikia.com/wiki/Wall_of_Text) (or code) and makes it difficult to figure out *exactly* what you are asking. – casperOne Dec 24 '11 at 17:55
  • 1
    I tried to make my question more concise. I wanted to include my full web.config and web.sitemap to ensure all relevant information is provided. – bperniciaro Dec 24 '11 at 20:23
  • Hi :-) Did you ever find a solution to this problem? It seems that one of the site we work with at work has this problem same problem. – Rasmus Jan 31 '12 at 10:38
  • Unfortunately I did not find a solution and it all boiled down to the inability to force the use of cookies. I have set every known element to 'UseCookies' but Anonymous-IDs still seem to be added to the URL. Much of my navigation-generation code was dependent upon the SiteMap.FindNode() method against my web.sitemap file, but because the URLs I was keying on were random this method just wouldn't work. I ended up writing my own code that would strip-off the AnonymouseID and keyed on that instead. – bperniciaro Feb 01 '12 at 14:08
  • To add, my application now runs without exception, but the funky URLs are still a hassle when dealing with things like Google Webmaster Tools because it views each of those URLs as a distinct address. The result is that it things I have duplicate pages out there when I don't. – bperniciaro Feb 01 '12 at 14:09

1 Answers1

1

The problem seems to lie specifically with use of cookies for anonymousIdentification. This can be seen by the format of the string in Uri.

A(XXXX): This is the Anonymous-ID. It is used to identify the (anonymous) user accessing your application. Source

Your web.config does however seem to show that option disabled and set to UseCookies only.

You can also force session to use cookies.

<sessionState mode="InProc" cookieless="UseCookies" timeout="60" />

More Info: http://msdn.microsoft.com/en-us/library/h6bb9cz9.aspx

benni_mac_b
  • 8,803
  • 5
  • 39
  • 59
  • Thanks benni_mac_b. I updated by element as you suggested and you're correct the default value for cookieless appears to be "false". The problem has disappeared momentarily (as it has done before after web.config updates) so I'll continue to check it to see if it sticks. – bperniciaro Dec 24 '11 at 20:28
  • In regards to the sitemap nodes, I don't believe that leaving off an extension is the cause of the problem. When the URLs don't get discombobulated the FindSitemapNode() method works just returning nodes without extensions. The nodes that don't have extensions are purposefully that way because they represent categories and don't have related pages. When the sitemap is generated by the treeview they becomes nodes without links. – bperniciaro Dec 24 '11 at 20:32
  • Updated the sessionstate as mentioned in first comment. Changing the web.config usually fixes the problem temporarily so going to keep verifying. But signs are positive. – bperniciaro Dec 24 '11 at 22:30
  • Problem is back again this morning so adding cookieless="UseCookies" to the , , and does not seem to fully turn-off cookiless mode. – bperniciaro Dec 25 '11 at 14:44
  • Shame, The site is using cookies for sessions, the only time you see the cookie-less URLs is as part of the sitemap URLs. This must be on the server side as the sessionID in the urls is the same when using different browsers. I think the link to the other SO question you posted is relevant as it would explain why it works after a config change but then breaks later. – benni_mac_b Dec 25 '11 at 16:12
  • I'd be willing to bet it's the same problem, so I'm thinking there must be something else in my web.config that is overriding the setting they're referencing. As far as I know I've applied "UseCookies" to every applicable tag. – bperniciaro Dec 26 '11 at 03:10
  • It looks like the tag is the one tag which allows you to completely turn off "cookieless" mode by setting it's property equal to "off". I have done this and for now it looks like session ids are not being passed in the url. However this means that users w/o cookies will not be able to use the application at all. – bperniciaro Dec 26 '11 at 16:16
  • Good luck hope it goes well :) – benni_mac_b Dec 26 '11 at 19:03
  • The horror begins again. I now have cookiless explicity turned "off" in the , the
    tag set to "UseCookies", and set to "useCookies". Still, the sitemapprovider puts the session in the URL.
    – bperniciaro Dec 27 '11 at 14:11