我的MvcSiteMapProvider项目有问题:我的站点地图总是空的。
我已经设置了一个Mvc.sitemap
,设置了web.config
条目。通过调试DefaultSiteMapProvider
显示我已读取并正确处理了 .sitemap 文件。但是,返回的站点地图基本上是空的:
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>
http://localhost:59933/
</loc>
</url>
</urlset>
然而,在单步执行代码时会发生一件奇怪的事情。root
我单步执行 DefaultSiteMapProvider 并观察变量中的根节点。在方法快结束时,根节点在设置isBuildingSiteMap = false
. 我不知道这可能如何影响设置根节点,但它在我的项目中始终如一地发生。
任何帮助如何防止root
节点被覆盖表示赞赏。:)
DefaultSiteMapProvider 的注释摘录,靠近BuildSiteMap
方法的最后(ll. 660 ff.):
HttpContext.Current.Cache.Add(/*...*/); // At this point the root node is correct
isBuildingSiteMap = false; // after executing this line, `root` gets reset to an empty node.
siteMapXml = null;
Mvc.站点地图:
<mvcSiteMap [...]>
<mvcSiteMapNode title="Home" controller="Home" action="Index">
<mvcSiteMapNode title="Test" controller="Listing" action="Index">
</mvcSiteMapNode>
</mvcSiteMap>
该web.config
条目直接来自文档页面,仅针对站点地图名称进行了调整。