升级到MVCSiteMap 4后,SiteMapPath为空

时间:2013-08-20 19:03:18

标签: mvcsitemapprovider

我只是尝试将站点地图提供程序从3.3.6.0更新到4.0.14。我跟着instruction on the wiki,但我的SiteMapPath现在呈现为空。除了将架构更新为4.0之外,我没有对mvc.sitemap文件进行任何更改。当我调试到SiteMapPathHelperModel时,我发现模型没有定义节点。我正在使用内部DI容器(我希望在切换到应用程序容器之前使其工作)。

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

我对此没有想法,并乐意提供可能有用的任何其他信息。我甚至不确定我可以在哪里挂钩来调试这个问题。从字面上看,我在工作3.3.6.0和不工作4.0.14之间唯一改变的是维基上规定的内容。

1 个答案:

答案 0 :(得分:0)

好的,由于您的/sitemap.xml端点似乎正在运行,因此您正确填充并正确加载了站点地图。

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

  1. 如果您使用的是动态节点提供程序,则必须将它们添加到不属于站点地图的节点中。见my question here - 我试图弄清楚为什么会出现这种情况。
  2. 您的路线与您的节点不符 - 请阅读Routing Basics和/或发布您的路线和Mvc.sitemap XML。
  3. 如果您检查上述内容并且一切看起来都是正确的,请制作一个小型演示项目,显示您的配置示例并在GitHub上打开一个问题,因为您的特定配置很可能与此问题有关。

    BTW - 您可以通过克隆系统上的current repodownloading the solution as a zip进行调试,在解决方案上启用NuGet包恢复(右键单击解决方案>启用NuGet包恢复),添加MvcSiteMapProvider项目到您的解决方案,然后在您的项目中删除对MvcSiteMapProvider的引用,并从MVC项目添加对新添加的MvcSiteMapProvider项目的引用。然后,您可以添加断点并逐步执行代码。我建议在执行此操作之前备份您的解决方案(或确保您可以回滚另一种方式),并在完成后恢复到当前状态。

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