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>
で構成されているプロバイダーがルート ノードとして null を返します。
siteMapFile
は指定されていますが、パスがアプリケーションの現在のディレクトリ構造内にありません。
構成ファイルの読み込み中にエラーが発生しました。
または - 構成ファイルの最上位の要素が
named <siteMap>
ではありません。または - 構成ファイルに複数の最上位ノードがあります。
または -
<siteMap>
の子の名前が<siteMapNode>
ではありません。または -
<siteMapNode>
について予期しない属性が解析されます。または -
<siteMapNode>
が設定されているprovider
の下位にサブ要素が入れ子になっています。または -
roles
の<siteMapNode>
に有効でない文字が含まれています。または - 一意でない
url
について<siteMapNode>
が解析されます。または - SiteMapNode で、重複した Key の値が検出されました。
または - ResourceKey の Title または SiteMapNode が指定されていたか、ノードに定義された
custom
属性に明示的なリソース式が格納されていました。または - 明示的なリソース式が、Title の Description または SiteMapNode、または
custom
属性に適用されていましたが、明示的な情報が有効ではありませんでした。または - Url の SiteMapNode の解析中にエラーが発生しました。
指定されたプロバイダーが、現在のサイト マップ プロバイダーのコレクションに存在しません。
サイト マップ ファイルを参照する <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 構造が再構築されます。