ASP.NET 站点地图

更新:2007 年 11 月

若要使用 ASP.NET 站点导航,必须描述站点结构以便站点导航 API 和站点导航控件可以正确公开站点结构。默认情况下,站点导航系统使用一个包含站点层次结构的 XML 文件。不过,您也可以将站点导航系统配置为使用其他数据源。有关更多信息,请参见 ASP.NET 站点导航提供程序

Web.sitemap 文件

创建站点地图最简单方法是创建一个名为 Web.sitemap 的 XML 文件,该文件按站点的分层形式组织页面。ASP.NET 的默认站点地图提供程序自动选取此站点地图。

尽管 Web.sitemap 文件可以引用其他站点地图提供程序或其他目录中的其他站点地图文件以及同一应用程序中的其他站点地图文件,但该文件必须位于应用程序的根目录中。有关更多信息,请参见如何:配置多个站点地图和站点地图提供程序

yy2ykkab.alert_security(zh-cn,VS.90).gif安全说明:

实现自定义的站点地图提供程序时,如果存储站点地图数据的文件的扩展名不是 .sitemap,则会有潜在安全风险。默认情况下,ASP.NET 配置为阻止客户端下载具有已知文件扩展名(如 .sitemap)的文件。为帮助保护您的数据,可将文件扩展名不是 .sitemap 的所有自定义站点地图数据文件放入 App_Data 文件夹中。有关更多信息,请参见保证 ASP.NET 站点导航的安全

下面的代码示例演示站点地图如何查找一个三层结构的简单站点。url 属性可以以快捷方式“~/”开头,该快捷方式表示应用程序根目录。有关更多信息,请参见 ASP.NET 网站路径

<siteMap>
  <siteMapNode title="Home" description="Home" url="~/default.aspx">
    <siteMapNode title="Products" description="Our products"
      url="~/Products.aspx">
      <siteMapNode title="Hardware" description="Hardware choices"
        url="~/Hardware.aspx" />
      <siteMapNode title="Software" description="Software choices"
        url="~/Software.aspx" />
    </siteMapNode>
    <siteMapNode title="Services" description="Services we offer"
        url="~/Services.aspx">
        <siteMapNode title="Training" description="Training classes"
          url="~/Training.aspx" />
        <siteMapNode title="Consulting" description="Consulting services" 
          url="~/Consulting.aspx" />
        <siteMapNode title="Support" description="Supports plans" 
          url="~/Support.aspx" />
    </siteMapNode>
  </siteMapNode>
</siteMap>

在 Web.sitemap 文件中,为网站中的每一页添加一个 siteMapNode 元素。然后,可以通过嵌入 siteMapNode 元素创建层次结构。在上例中,“硬件”和“软件”页是“产品”siteMapNode 元素的子元素。title 属性定义通常用作链接文本的文本,description 属性同时用作文档和 SiteMapPath 控件中的工具提示。

yy2ykkab.alert_note(zh-cn,VS.90).gif说明:

在站点地图中,您可以引用 Web 应用程序外部的 URL。ASP.NET 无法测试对应用程序外部的 URL 的访问。因此,如果您启用了安全控制,除非将角色属性设置为“*”,否则将不会看到站点地图,设置该属性可使所有客户端无需首先测试对 URL 的访问就能查看站点地图节点。有关更多信息,请参见 ASP.NET 站点地图安全性调整

有效站点地图

有效站点地图文件只包含一个直接位于 siteMap 元素下方的 siteMapNode 元素。但第一级 siteMapNode 元素可以包含任意数量的子 siteMapNode 元素。此外,尽管 url 属性可以为空,但有效站点文件不能有重复的 URL。ASP.NET 默认站点地图提供程序以外的提供程序可能没有这种限制。

配置多个站点地图

您可以使用多个站点地图文件或提供程序来描述整个网站的导航结构。例如,通过用下面的代码引用 siteMapNode 元素中的子站点地图文件,可以将根 Web.sitemap 文件链接到该子站点地图文件。

<siteMapNode siteMapFile="MySiteMap.sitemap"/>

有关更多信息,请参见如何:配置多个站点地图和站点地图提供程序

本地化站点地图

您可以本地化站点地图中的下面的属性。

若要根据用户的区域设置本地化 Url 属性或定义不同的导航结构,您需要为每个区域设置定义不同的站点地图文件并在运行时以编程方式切换到相应的 Provider。有关更多信息,请参见如何:以编程方式修改内存中的站点地图节点。有关本地化站点地图的更多信息,请参见如何:本地化站点地图数据

请参见

任务

如何:以编程方式修改内存中的站点地图节点

如何:配置多个站点地图和站点地图提供程序

如何:本地化站点地图数据

概念

ASP.NET 站点导航概述

ASP.NET 站点导航提供程序

保证 ASP.NET 站点导航的安全

保证数据访问的安全

其他资源

寄宿环境中的 ASP.NET 应用程序安全性