0

我有这个站点地图:

<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0">
  <siteMapNode>
    <siteMapNode url="www.google.com" title="Google" roles="*" />
    <siteMapNode url="www.zdnet.com" title="Zdnet" roles="NonExistingRole" />
    <siteMapNode url="www.microsoft.com" title="Microsoft" roles="*" />
    <siteMapNode url="www.bing.com" title="Bing" roles="*" />
  </siteMapNode>
</siteMap>

我正在使用这样配置的自定义角色提供程序(每当我调用例如 GetRolesForUser 方法时,这都有效):

    <authentication mode="Windows"/>
<roleManager enabled="true" defaultProvider="MyProvider">
    <providers>
        <clear/>
        <add name="MyProvider" type="CustomProviders.MyTestRoleProvider, CustomProviders, Version=1.0.0.0, Culture=neutral"/>
    </providers>
</roleManager>

<siteMap defaultProvider="XmlSiteMapProvider" enabled="true">
  <providers>
    <clear/>
    <add name="XmlSiteMapProvider" type="System.Web.XmlSiteMapProvider" siteMapFile="Web.sitemap" securityTrimmingEnabled="true"/>
  </providers>
</siteMap>

我期望的是角色=“NonExistingRoles”的节点不会被可视化,但它会。如何解决这个问题呢?

我还需要打开吗?

4

1 回答 1

2

显然这是因为根 siteMapNode 还需要将角色属性设置为 *,如下所示:

<siteMapNode roles="*">
于 2009-08-27T08:00:14.180 回答