Вместо:
Routes
routes.MapPageRoute("Default", "Home", "~/Default.aspx");
routes.MapPageRoute("ListAll", "List", "~/ListAll.aspx");
Sitemap
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="~/Home" title="Home" description="Home">
<siteMapNode url="~/List" title="List All" description="List All" />
</siteMapNode>
</siteMap>
попробуйте это:
Routes
routes.MapPageRoute("Default", "Home", "~/");
routes.MapPageRoute("ListAll", "List", "~/ListAll.aspx");
Sitemap
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="~/" title="Home" description="Home">
<siteMapNode url="~/List" title="List All" description="List All" />
</siteMapNode>
</siteMap>
В противном случае «~ /» и «~ / Home» - это одно и то же.
или вы можете оставить вышеприведенное как есть и на странице default.aspx сделать что-то вроде этого ...
if(Page.RouteData.Values[0] == "default.aspx")
Response.Redirect("~/Home")
Это будет эффективно перенаправлять любой запрос по умолчанию к вашему запросу по умолчанию.
Ваша проблема в том, что сервер видит ~ / "и" ~ / Home "как два разных URL, и вы в основном хотите, чтобы они были одинаковыми, поэтому вам нужно принять решение и решить, на какой из них перенаправитьдругой.
лично, если бы это было моим решением, у меня не было бы маршрута для "~ / Home", и мой базовый узел в моей карте сайта выглядел бы примерно так:
<siteMapNode url="~/" title="Home" description="Home">
Очевидно, что «http://yourdomain/" - это домашняя страница, а» http://yourdomain/Home" может быть чем угодно (о вашем доме, моем доме, домашнем милом доме, вещах, которые мне нравятся в моем доме), тогда как «http://adomain/" - это домашняя страница по всему миру.для всех.