ASP.NET站点地图提供程序站点地图选项卡未显示

时间:2011-11-29 06:46:12

标签: c# asp.net

我正在使用VS2005,而我在使用站点地图标签时遇到了一些问题。

我在ASP.NET配置工具中分配了2个角色,并为每个用户分配了一个角色。

我的登录正常,访问控制正在运行。如果我没有登录并尝试访问角色限制页面,它会将我重定向到登录页面。

但是,当我登录时,假设在我使用正确的特权用户登录时显示的某些站点节点仍未显示。


登录前: enter image description here


登录后:enter image description here

从上面的屏幕截图中,我的节点仅在登录时显示Home且未登录。我应该看到一个不受admin01限制的数据库管理选项卡。


以下是我的Web.config代码段:

    <system.web>
  <authentication mode="Forms" />
  <roleManager enabled="true" />
  <pages styleSheetTheme="DataWebControls" />

        <siteMap defaultProvider="XmlSiteMapProvider" enabled="true">
            <providers>
                <add name="XmlSiteMapProvider"
                  description="Default SiteMap provider."
                  type="System.Web.XmlSiteMapProvider"
                  siteMapFile="Web.sitemap"
                  securityTrimmingEnabled="true" />
            </providers>
        </siteMap>
        <compilation debug="true"/> 
    </system.web>

如果我从<siteMap></siteMap>删除整个代码,我的节点将显示为正常:

enter image description here


我不期待一个完美的解决方案,因为我不知道我提供的信息是否足够,但我将不胜感激。

如果我需要更多信息,请告诉我,我会提供更多信息。

谢谢


已编辑:已添加Web.sitemap代码段:

<siteMapNode url="/Project/Default.aspx"
          title="Home" description="Home">

    <siteMapNode title="Database Management"
     description="Database tab">

        <siteMapNode url="/Project/Database/Employee.aspx"
         title="Employee"
         description="" />

        <siteMapNode url="/Project/Databaase/Customer.aspx"
          title="Customer"
          description="" />

        <siteMapNode url="/Project/Database/Goods.aspx"
          title="Goods"
          description="" />

        <siteMapNode url="/Project/Database/Transactions.aspx"
          title="Past Transactions"
          description="" />

    </siteMapNode>

</siteMapNode>

已编辑:在文件夹Access role screenshot上添加了/Project/Database

enter image description here enter image description here


其他信息:

即使未创建访问规则,并且未向用户分配任何角色,仍未显示Database个节点

2 个答案:

答案 0 :(得分:1)

您是否尝试过将role属性添加到相关的sitemapnodes?

<?xml version="1.0" encoding="utf-8" ?>
<siteMap>
<siteMapNode url="/Project/Default.aspx" 
          title="Home" description="Home"> 

    <siteMapNode title="Database Management" 
     description="Database tab" roles="Admin"> 

        <siteMapNode url="/Project/Database/Employee.aspx" 
         title="Employee" roles="Employee,Admin" 
         description="" /> 

        <siteMapNode url="/Project/Databaase/Customer.aspx" 
          title="Customer" roles="Customer,Employee,Admin" 
          description="" /> 

        <siteMapNode url="/Project/Database/Goods.aspx" 
          title="Goods" 
          description="" /> 

        <siteMapNode url="/Project/Database/Transactions.aspx" 
          title="Past Transactions" 
          description="" /> 

    </siteMapNode> 
</siteMapNode> 
</siteMap>

您是否检查过网站管理工具添加到您限制访问的文件夹中的web.config文件?因为有时问题就在那里..

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.web>
    <authorization>
      <allow roles="Admin,Employee" />
      <deny users="?" />
    </authorization>
  </system.web>
</configuration>

答案 1 :(得分:1)

我想我找到了一个解决方案。

限制访问的网络配置...

首先允许访问然后拒绝它:

<configuration>
    <system.web>
        <authorization>
            <allow roles="Admin1" />
            <deny users="*" />
        </authorization>
    </system.web>
</configuration

当反之亦然时,链接会消失,并以上述方式显示..

希望它能解决您的问题....因为我为此创建了一个解决方案并进行了测试。 (因为我使用的是sqlsitemapprovider)