共用方式為


XmlSiteMapProvider.BuildSiteMap 方法

定義

從 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

傳回網站地圖導覽結構的根 SiteMapNode

例外狀況

未正確初始化 XmlSiteMapProvider

-或- 針對並非唯一的 <siteMapNode> 剖析了 siteMapFile

-或- siteMapFile 所指定的檔案副檔名不是 .sitemap。

-或- siteMapFile 指定的檔案不存在。

-或- <siteMapNode>provider 中所設的提供者傳回 Null 根節點。

已指定 siteMapFile,但該路徑位於應用程式目前的目錄結構之外。

載入組態檔時發生錯誤。

-或- 組態檔的最上層項目不是 named <siteMap>

-或- 組態檔的最上層節點不只一個。

-或- <siteMap> 的子系名稱不是 <siteMapNode>

-或- 針對 <siteMapNode> 剖析了未預期的屬性。

-或- 子項目巢狀位於已設定 provider<siteMapNode> 下方。

-或- <siteMapNode>roles 包含無效字元。

-或- 針對並非唯一的 <siteMapNode> 剖析了 url

-或- 發現 SiteMapNodeKey 值重複。

-或- 對 SiteMapNode 指定了 ResourceKeyTitle,或為節點定義的 custom 屬性包含明確資源運算式。

-或- 已將明確資源運算式套用至 TitleDescription,或套用至 SiteMapNodecustom 屬性,但明確資訊無效。

-或- 剖析 SiteMapNodeUrl 時發生錯誤。

在目前的網站地圖提供者集合中找不到具名提供者。

參考網站地圖檔案的 <siteMapNode>siteMapFile 包含空字串。

<siteMapNode>siteMapFile 使用實體路徑。

-或- 嘗試剖析 siteMapFile 中的指定檔案虛擬路徑時發生錯誤。

範例

下列程式碼範例示範如何建立類別的新實例 XmlSiteMapProvider ,並將其初始化,以從 XML 資料建立網站地圖。

<%@ 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>");  
 }  

上述程式碼範例會使用位於 ASP.NET 應用程式之虛擬根目錄中的 XML 檔案。 檔案的格式如下:

<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 集合都會成為唯讀。 當剖析 XmlSiteMapProvider Url 來自網站地圖檔案的屬性時,它會將應用程式相對 url 和相對 url 轉換為應用程式絕對虛擬路徑。

XmlSiteMapProvider訂閱檔案變更通知的網站地圖檔案。 如果對 sitemap 檔案進行任何變更, XmlSiteMapProvider 就會重載,並重建網站地圖結構。

適用於

另請參閱