2011-11-29 21 views
0

我正在使用VS2005,并且在站点地图选项卡上遇到了一些问题。ASP.NET站点提供商sitemap选项卡不显示

我在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> 

编辑:在文件夹中添加/Project/DatabaseAccess role screenshot

enter image description here enter image description here


附加信息:

即使没有创建的访问规则,用户不与任何角色分配,则Database节点仍未显示

+0

看来我们的web.sitemap文件配置不正确。你能否请编辑你的文章,并添加你的web.sitemap,并添加一些信息,你在项目中定义了什么样的角色 - thx –

+0

如果sitemab选项卡不包含在web.config中,我的站点地图可以显示 – gymcode

回答

1

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

该网站CONFIGS被限制访问...

首先,请允许访问,然后否认:

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

,当我做到这一点,反之亦然链接disaappears并以上述方式出现。 。

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

1

你试过添加角色属性到相关的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> 
+0

我检查了web.config '每个文件夹中的文件,授权都是正确的。我也尝试添加在我的siteMapNods中的角色,但它仍然不起作用。 – gymcode