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 が正常に初期化されませんでした。

  • または - 一意でない siteMapFile について <siteMapNode> が解析されます。

  • または - siteMapFile で指定されているファイル名拡張子が .sitemap ではありません。

  • または - siteMapFile で指定されているファイルが存在しません。

  • または - provider<siteMapNode> で構成されているプロバイダーがルート ノードとして null を返します。

siteMapFile は指定されていますが、パスがアプリケーションの現在のディレクトリ構造内にありません。

構成ファイルの読み込み中にエラーが発生しました。

  • または - 構成ファイルの最上位の要素が named <siteMap> ではありません。

  • または - 構成ファイルに複数の最上位ノードがあります。

  • または - <siteMap> の子の名前が <siteMapNode> ではありません。

  • または - <siteMapNode> について予期しない属性が解析されます。

  • または - <siteMapNode> が設定されている provider の下位にサブ要素が入れ子になっています。

  • または - roles<siteMapNode> に有効でない文字が含まれています。

  • または - 一意でない url について <siteMapNode> が解析されます。

  • または - SiteMapNode で、重複した Key の値が検出されました。

  • または - ResourceKeyTitle または SiteMapNode が指定されていたか、ノードに定義された custom 属性に明示的なリソース式が格納されていました。

  • または - 明示的なリソース式が、TitleDescription または SiteMapNode、または custom 属性に適用されていましたが、明示的な情報が有効ではありませんでした。

  • または - UrlSiteMapNode の解析中にエラーが発生しました。

指定されたプロバイダーが、現在のサイト マップ プロバイダーのコレクションに存在しません。

サイト マップ ファイルを参照する <siteMapNode>siteMapFile が空の文字列です。

siteMapFile<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 構造が再構築されます。

適用対象

こちらもご覧ください