2013-08-20 40 views
0

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

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

我对这一个想法并不乐意提供任何可能有用的附加信息。我甚至不知道我可以在哪里调试这个问题。从字面上看,我在工作3.3.6.0和不工作4.0.14之间唯一改变的是维基上规定的。

+0

嘿那里。你有没有解决这个问题?我发现自己处于相同的情况,并不知道为什么SiteMapPath()是空白的 –

回答

0

好的,因为您的/sitemap.xml端点看起来可以正常工作,所以您正确地填写并正确加载了站点地图。

有一对夫妇的事情我知道的,可能会导致这种情况发生:

  1. 如果使用动态节点提供者,必须将其添加到不另外Sitemap的部分节点。见my question here - 我试图找出为什么这种情况。
  2. 您的路线与您的节点不匹配 - 请阅读Routing Basics和/或张贴您的路线和Mvc.sitemap XML。

如果检查上述一切似乎是正确的,请展示你的配置的样本小的演示项目,并在GitHub上打开一个问题,因为它极有可能您的特定配置有事情做与问题。

顺便说一句 - 你可以通过你的系统或者downloading the solution as a zip上克隆current repo,使NuGet包您的解决方案恢复调试(右键单击该解决方案>启用NuGet包还原),该MvcSiteMapProvider项目添加到您的解决方案,然后在你的项目移除对MvcSiteMapProvider的引用,并将引用添加到您的MVC项目中新添加的MvcSiteMapProvider项目。然后,您可以添加断点并逐步执行代码。我建议在执行此操作之前对您的解决方案进行备份(或确保可以以其他方式回退),并在完成后恢复到当前状态。

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