我有一个我继承的 Web 应用程序,它包含一个页面,该页面根据传递给它的对象的状态决定您需要访问哪个 URL。
URL 保存在站点地图中,并且有一种方法可以检索所有这些。
private Dictionary<string, string> GetUrls() {
var urls = new Dictionary<string, string>();
var provider = SiteMap.Provider;
var page1 = provider.FindSiteMapNodeFromKey("page1");
var page2 = provider.FindSiteMapNodeFromKey("page2");
if (page1 == null || page2 == null)
{
throw new ApplicationException("Pages not found in sitemap");
}
urls["page1URL"] = page1.Url.ToString(CultureInfo.InvariantCulture);
urls["page2URL"] = page2.Url.ToString(CultureInfo.InvariantCulture);
return urls;
}
不幸的是,在这种方法中,page1 和 page2 始终为 null
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" enableLocalization="true">
<siteMapNode resourceKey="Concessions" rule="AllowRead">
<siteMapNode url="/page1.aspx" resourceKey="page1" rule="AllowAuthorised"/>
<siteMapNode url="/page2.aspx" resourceKey="page2" rule="AllowAuthorised"/>
</siteMapNode>
</siteMap>
我试图通过这个过程进行调试,但我没有得到任何解决问题的地方。所以回顾一下,我需要这个方法来返回站点地图中定义的页面的 URL。