0

我刚刚尝试将站点地图提供程序从 3.3.6.0 更新到 4.0.14。我按照wiki 上的说明进行操作,但我的 SiteMapPath 现在显示为空。除了将架构更新到 4.0 之外,我没有对 mvc.sitemap 文件进行任何更改。当我调试到 SiteMapPathHelperModel 时,我发现模型没有定义节点。我正在使用内部 DI 容器(我想在切换到应用程序容器之前让它工作)。

当我检查 sitemap.xml 文件时,它填充得很好,这让我认为 mvc.sitemap 正在被读取。

我对此一无所知,很乐意提供任何可能有用的附加信息。我什至不确定在哪里可以调试这个问题。从字面上看,我在工作的 3.3.6.0 和不工作的 4.0.14 之间唯一改变的是 wiki 上规定的内容。

4

1 回答 1

0

好的,由于您的/sitemap.xml端点似乎正在工作,您是正确的,站点地图正在正确填充和加载。

我知道有几件事会导致这种情况发生:

  1. 如果您使用的是动态节点提供程序,则必须将它们添加到不属于站点地图的节点。在这里看到我的问题- 我试图弄清楚为什么会这样。
  2. 您的路线与您的节点不匹配 - 请阅读Routing Basics和/或发布您的路线和 Mvc.sitemap XML。

如果您检查了上述内容并且一切似乎都正确,请制作一个小型演示项目来显示您的配置示例并在 GitHub 上打开一个问题,因为您的特定配置很可能与问题有关。

顺便说一句-您可以通过克隆系统上的当前存储库将解决方案下载为 zip进行调试,在您的解决方案上启用 NuGet 包还原(右键单击解决方案 > 启用 NuGet 包还原),将 MvcSiteMapProvider 项目添加到您的解决方案中,然后在您的项目中删除对 MvcSiteMapProvider 的引用,并从您的 MVC 项目中添加对新添加的 MvcSiteMapProvider 项目的引用。然后,您可以添加断点并单步执行代码。我建议在执行此操作之前备份您的解决方案(或确保您可以通过其他方式回滚),并在完成后恢复到当前状态。

我在这里记录了整个过程:http: //www.shiningtreasures.com/post/2013/08/21/debugging-an-mvcsitemapprovider-configuration

于 2013-08-21T22:11:50.777 回答