我只是通过装饰器的方式使用没有 xml 的 MvcSiteMapNode。正如我在这篇文章中所说
我确信我只有一个带有空根节点的节点。它也总是有效,除了有时我得到这个错误。
声明了多个没有父键的节点。必须为 SiteMap 中除 1 个节点之外的所有节点设置父键。没有父键的节点将被视为根节点。请注意,在 XML 中定义节点时,XML 文件必须包含根节点。
您可以通过将 MvcSiteMapProvider_EnableSiteMapFile 设置设置为“false”来禁用 XML 配置。对于外部 DI 配置,您可以通过从 MvcSiteMapProvider DI 模块中删除 XmlSiteMapNodeProvider 来禁用 XML 解析。
或者,您可以将 MvcSiteMapProvider_IncludeRootNodeFromSiteMapFile 设置设置为“false”以从 XML 文件中排除根节点,但包括所有其他节点。对于外部 DI 配置,可以在 XmlSiteMapNodeProvider 的构造函数中找到此设置。
SiteMapCacheKey: 'sitemap://localhost/'
不明确的根节点:
父键:'' | 控制器:“家”| 行动:“索引”| 区域:'管理员' | 网址:'/管理员' | 键:“根”| 来源:'MvcSiteMapNodeAttribute'
父键:'' | 控制器:“家”| 行动:“索引”| 区域:'管理员' | 网址:'/管理员' | 键:“根”| 来源:'MvcSiteMapNodeAttribute'
我的应用程序设置
<add key="MvcSiteMapProvider_EnableSiteMapFile" value="false" />
<add key="MvcSiteMapProvider_IncludeRootNodeFromSiteMapFile" value="false" />
<add key="MvcSiteMapProvider_IncludeAssembliesForScan" value="dllmain,dll2" />
<add key="MvcSiteMapProvider_UseExternalDIContainer" value="false" />
<add key="MvcSiteMapProvider_ScanAssembliesForSiteMapNodes" value="true" />
我认为这与站点地图的初始化方式有关。它可能容易受到跨线程操作的影响。它可能会被双重初始化。
你对此有什么建议吗?
提前致谢。