XmlSiteMapProvider只解析第一个节点

时间:2015-04-21 13:52:04

标签: asp.net sitemap sitemapprovider

我有一个烦人的问题,我找不到任何解决方案的开头,所以我希望你能帮助我。

我有一个为每个节点定义角色的站点地图:

<?xml version="1.0" encoding="utf-8"?>
<siteMap enableLocalization="true">
  <siteMapNode title="" url="" roles="">
    <siteMapNode title="default" url="~/Default.aspx" roles="user" />
    <siteMapNode title="supervision" url="~/EcranSupervision.aspx" roles="Admin" />
    <siteMapNode title="exploitation" url="~/ChaineTraitementList.aspx" roles="Admin" />
  </siteMapNode>
</siteMap>

在我的web.config中,我启用安全性并使用自定义提供程序:

<siteMap defaultProvider="MainMenuSitemap">
      <providers>
        <add name="MainMenuSitemap" type="UbiXmlSiteMapProvider" siteMapFile="Web.sitemap" securityTrimmingEnabled="true" />
      </providers>
    </siteMap>

在我的提供程序中,我只重写IsAccessibleToUser来执行我的逻辑:

public class UbiXmlSiteMapProvider : XmlSiteMapProvider
    {
        public override bool IsAccessibleToUser(HttpContext context, SiteMapNode node)
        {
            // custom logic here
        }
    }

我的问题是IsAccessibleToUser中使用的节点始终是具有url“Default.aspx”的节点。 因此,如果我有角色看到它,则显示所有节点,如果我没有角色,则不显示任何节点。

我不明白这里有什么问题。

你有提示吗?

0 个答案:

没有答案