Asp.net 为什么SiteMap.CurrentNode在升级到4.0后返回null
我最近将一个网站升级到ASP.NET 4.0,在将代码移动到登台服务器后,每次我浏览到一个页面目录,如mysite.com/bacon/SiteMap.CurrentNode都是空的。但是,如果我浏览mysite.com/bacon/default.aspx,它就可以正常工作。服务器和站点配置为4.0,文档默认设置为默认。aspx是默认设置的第一页Asp.net 为什么SiteMap.CurrentNode在升级到4.0后返回null,asp.net,c#-4.0,iis-6,Asp.net,C# 4.0,Iis 6,我最近将一个网站升级到ASP.NET 4.0,在将代码移动到登台服务器后,每次我浏览到一个页面目录,如mysite.com/bacon/SiteMap.CurrentNode都是空的。但是,如果我浏览mysite.com/bacon/default.aspx,它就可以正常工作。服务器和站点配置为4.0,文档默认设置为默认。aspx是默认设置的第一页 我还应该提到,这种行为并没有发生在我的本地开发机器上,它识别出mysite.com/bacon/实际上是mysite.com/bacon/defau
我还应该提到,这种行为并没有发生在我的本地开发机器上,它识别出mysite.com/bacon/实际上是mysite.com/bacon/default.aspx,并且相应地设置了SiteMap.CurrentNode 证明站点地图提供程序使用的是HttpContext.Request.rawUrl。
由于某种原因,在从.Net 2.0到4.0的更改中,rawurl将不再返回默认文档,因此改用HttpContext.Request.Path。检查Web.sitemap节点的url(如果使用此类文件!),不要忘记在url末尾添加“/”。例如,这将产生错误:
<siteMapNode title="bacon" url="mysite.com/bacon" description="" >
但这是正确的:
<siteMapNode title="bacon" url="mysite.com/bacon/" description="" >
HttpContext.Current.Request.Path