XmlSiteMapProvider.BuildSiteMap 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
从 XML 文件加载站点地图信息,并在内存中生成它。
public:
override System::Web::SiteMapNode ^ BuildSiteMap();
public override System.Web.SiteMapNode BuildSiteMap ();
override this.BuildSiteMap : unit -> System.Web.SiteMapNode
Public Overrides Function BuildSiteMap () As SiteMapNode
返回
返回站点地图导航结构的根 SiteMapNode。
例外
XmlSiteMapProvider 未正确地初始化。
或 - 分析
siteMapFile
时发现不唯一的<siteMapNode>
。或 -
siteMapFile
所指定的文件的扩展名不是 .sitemap。或 -
siteMapFile
所指定的文件不存在。或 -
provider
的<siteMapNode>
中配置的提供程序返回空根节点。
指定了 siteMapFile
,但是该路径位于应用程序的当前目录结构之外。
加载配置文件时出错。
或 - 配置文件的顶层元素不是
named <siteMap>
。或 - 配置文件中存在多个顶层节点。
或 -
<siteMap>
的子级具有不同于<siteMapNode>
的名称。或 - 分析
<siteMapNode>
时发现意外特性。或 - 子元素嵌套在设置了
<siteMapNode>
的provider
下面。或 -
roles
的<siteMapNode>
包含无效字符。或 - 分析
url
时发现不唯一的<siteMapNode>
。或 - 发现具有重复 SiteMapNode 值的 Key。
或 - 在为包含显式资源表达式的节点定义的 ResourceKey 或
custom
特性上指定了 Title 或 SiteMapNode。或 - 向 Title 或 Description 或向 SiteMapNode 的
custom
特性应用了显式的资源表达式,但显式信息无效。或 - 分析 Url 的 SiteMapNode 时出错。
无法在当前站点地图提供程序集合中找到命名的提供程序。
引用站点地图文件的 <siteMapNode>
包含用于 siteMapFile
的空字符串。
示例
下面的代码示例演示如何创建 类的新实例并初始化它以基于 XML 数据生成 XmlSiteMapProvider 站点地图。
<%@ Page Language="c#" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<SCRIPT runat="server">
private void Page_Load(object sender, System.EventArgs e)
{
// Create an instance of the XmlSiteMapProvider class.
XmlSiteMapProvider testXmlProvider = new XmlSiteMapProvider();
NameValueCollection providerAttributes = new NameValueCollection(1);
providerAttributes.Add("siteMapFile","test.sitemap");
// Initialize the provider with a provider name and file name.
testXmlProvider.Initialize("testProvider", providerAttributes);
// The BuildSiteMap method is implicitly called when the
// RootNode property is accessed.
// Prints "/myvirtualdirectory/WebForm1.aspx"
Response.Write(testXmlProvider.RootNode.Url + "<BR>");
// Prints "/myvirtualdirectory/WebForm2.aspx"
Response.Write(testXmlProvider.CurrentNode.Url + "<BR>");
}
前面的代码示例使用位于应用程序虚拟根目录的 XML ASP.NET 文件。 该文件采用以下格式:
<siteMap>
<siteMapNode title="RootNode" description="The root page." url="WebForm1.aspx">
<siteMapNode title="CurrentNode" description="Some sub page." url="WebForm2.aspx"/>
</siteMapNode>
</siteMap>
注解
BuildSiteMap调用 方法以从持久性存储加载和生成站点地图。
有关启用安全修整时的默认行为,请参阅 中的"备注 IsAccessibleToUser "。
在 XmlSiteMapProvider 对象分析和加载站点地图数据后,所有加载的对象 SiteMapNode SiteMapNodeCollection 和集合都成为只读对象。 从站点地图文件分析 属性时,它会将应用程序相对 URL 以及相对 URL 转换为 XmlSiteMapProvider Url 应用程序绝对虚拟路径。
XmlSiteMapProvider订阅 .sitemap 文件的文件更改通知。 如果对 .sitemap 文件进行了任何更改,将重新加载 ,并重新生成 XmlSiteMapProvider 站点地图结构。