而不是:
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,您基本上希望它们是相同的,因此您必须做出决定,并决定将哪个url重定向到另一个url。
就我个人而言,如果这是我的解决方案,我将没有“~/Home”的路径,并且我的站点地图中的基本节点将如下所示:
<siteMapNode url="~/" title="Home" description="Home">
很明显,“http://yourdomain/”是主页,“http://yourdomain/Home”可以是任何东西(关于你的家、我的家、温馨的家、我喜欢的家),而“http://adomain/”是全球所有人的主页。