我从一位不再可用的同事手中接管了一个相当大的C#.NET 2.0遗留Web应用程序。此Web应用程序由一个解决方案中的多个项目组成。我遇到了一个我根本不理解的问题,希望有人在这里。
该应用程序在站点地图子文件夹中包含多个.sitemap文件。到现在为止还挺好。但我发现一个.sitemap文件在Web项目的根目录中浮动,并且不在应用程序的任何地方使用(它不包含在web.config中)。
我排除了这个文件。没有它,Web应用程序运行正常。所有菜单都正确加载。直到我点击一个使用递归来查找某些控件的方法(不是站点地图!)。此方法向下运行来自给定点的所有控件,然后崩溃,因为XMLSitemapProvider缺少此文件。这个方法被多次调用没有问题,但是当用户注销它时,它会以某种方式运行控制的层次化路径,最终到达缺失的.sitemap文件。
该文件还需要位于根目录中的这个位置。将它移到其他地方会导致同样的崩溃。
XmlSiteMapProvider所需的文件web.sitemap不存在。
我搜索过此文件名和所有“.sitemap”文件,但无法在解决方案的任何位置找到它。找到0个结果。我已经浏览了导致崩溃的所有代码,它似乎是随意的(它与站点地图无关)。碰撞刚好发生,因为当它通过所有控件时,它会触及XmlSiteMapProvider寻找另一个控件。简而言之,我找不到这个文件的参考资料!
由于这个Web应用程序非常庞大,我无法手动浏览代码的每个部分。有成千上万行代码。有没有人知道其他任何方式,然后通过web.config包含站点地图或如何注册站点地图文件以及我应该在哪里看?
最后说明:此应用程序使用本地化。站点地图已本地化,我找到了这个站点地图的资源。我希望排除那些可以解决问题。不幸的是它没有。
答案 0 :(得分:0)
据我了解,您刚刚排除了根站点地图。请查看以下链接:http://msdn.microsoft.com/en-us/library/yy2ykkab.aspx。
它说:
Web.sitemap文件必须位于应用程序根目录
中
答案 1 :(得分:0)
答案是,当您未在webconfig中设置默认值时,它将查找此文件名。在webconfig中将默认设置为实际定义的站点地图,问题就会消失......