デコレータの方法だけで、xml なしで MvcSiteMapNode を使用しています。この投稿で言ったように
空のルート ノードを持つノードが 1 つしかないと確信しています。また、このエラーが発生する場合を除いて、常に機能します。
親キーなしで宣言されたノードが複数あります。親キーは、SiteMap の 1 つのノードを除くすべてのノードに設定する必要があります。親キーのないノードはルート ノードと見なされます。XML でノードを定義する場合、XML ファイルにはルート ノードが含まれている必要があります。
MvcSiteMapProvider_EnableSiteMapFile 設定を "false" に設定することで、XML 構成を無効にすることができます。外部 DI 構成の場合、MvcSiteMapProvider DI モジュールから XmlSiteMapNodeProvider を削除することにより、XML 解析を無効にすることができます。
または、MvcSiteMapProvider_IncludeRootNodeFromSiteMapFile 設定を "false" に設定して、XML ファイルからルート ノードを除外し、他のすべてのノードを含めることができます。外部 DI 構成の場合、この設定は XmlSiteMapNodeProvider のコンストラクターにあります。
SiteMapCacheKey: 'sitemap://localhost/'
あいまいなルート ノード:
親キー: '' | コントローラー: 'ホーム' | アクション: 'インデックス' | エリア: 「管理者」 | URL: '/管理者' | キー: 'ルート' | ソース: 'MvcSiteMapNodeAttribute'
親キー: '' | コントローラー: 'ホーム' | アクション: 'インデックス' | エリア: 「管理者」 | URL: '/管理者' | キー: 'ルート' | ソース: 'MvcSiteMapNodeAttribute'
私のApp.Settings
<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" />
サイトマップが初期化される方法と関係があると思います。クロススレッド操作に対して脆弱である可能性があります。二重に初期化される可能性があります。
これについて何かアドバイスはありますか?
前もって感謝します。