MvcSiteMapProviderプロジェクトに問題があります。サイトマップが常に空です。
をMvc.sitemap
設定し、web.config
エントリを設定しました。をデバッグするDefaultSiteMapProvider
と、.sitemapファイルが読み取られて正しく処理されていることがわかります。ただし、返されるサイトマップは基本的に空です。
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>
http://localhost:59933/
</loc>
</url>
</urlset>
ただし、コードをステップ実行すると、奇妙なことが起こります。DefaultSiteMapProviderをステップスルーし、root
変数のルートノードを監視します。メソッドの終わり近くで、を設定すると、ルートノードは空のノードにリセットされますisBuildingSiteMap = false
。これがルートノードの設定にどのように影響するかはわかりませんが、プロジェクトでは一貫して発生します。
root
ノードが上書きされないようにする方法についてのヘルプをいただければ幸いです。:)
メソッドの最後の方にあるDefaultSiteMapProviderからの注釈付きの抜粋BuildSiteMap
(ll。660以降):
HttpContext.Current.Cache.Add(/*...*/); // At this point the root node is correct
isBuildingSiteMap = false; // after executing this line, `root` gets reset to an empty node.
siteMapXml = null;
Mvc.sitemap:
<mvcSiteMap [...]>
<mvcSiteMapNode title="Home" controller="Home" action="Index">
<mvcSiteMapNode title="Test" controller="Listing" action="Index">
</mvcSiteMapNode>
</mvcSiteMap>
エントリはドキュメントページweb.config
から直接取得され、サイトマップ名に合わせて調整されます。