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>

私が期待しているのは、roles="NonExistingRoles" を持つノードが視覚化されないことですが、視覚化されます。この問題を解決するには?

また、オンにする必要がありますか?

4

1 に答える 1

2

どうやら、ルートの siteMapNode にも次のように * に設定されたロール属性が必要なためです。

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