XmlSiteMapProvider.BuildSiteMap Method


XML 파일로부터 사이트 맵 정보를 로드하여 메모리에 빌드합니다.Loads the site map information from an XML file and builds it in memory.

 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를 반환합니다.Returns the root SiteMapNode of the site map navigation structure.


XmlSiteMapProvider가 제대로 초기화되지 않은 경우The XmlSiteMapProvider was not initialized properly.

또는-or- 고유하지 않은 siteMapFile에 대해 <siteMapNode>이 구문 분석된 경우A siteMapFile is parsed for a <siteMapNode> that is not unique.

또는-or- siteMapFile에 지정된 파일의 확장명이 .sitemap이 아닌 경우The file specified by the siteMapFile does not have the file name extension .sitemap.

또는-or- siteMapFile에 지정된 파일이 없는 경우The file specified by the siteMapFile does not exist.

또는-or- provider<siteMapNode>에 구성된 공급자가 null 루트 노드를 반환하는 경우A provider configured in the provider of a <siteMapNode> returns a null root node.

siteMapFile이 지정되었지만 경로가 애플리케이션의 현재 디렉터리 구조 밖에 있는 경우The siteMapFile is specified but the path lies outside the current directory structure for the application.

구성 파일을 로드하는 동안 오류가 발생하는 경우There is an error loading the configuration file.

또는-or- 구성 파일의 최상위 요소가 named <siteMap>이 아닌 경우The top element of the configuration file is not named <siteMap>.

또는-or- 구성 파일에 최상위 노드가 둘 이상 있는 경우More than one top node exists in the configuration file.

또는-or- <siteMap>의 자식 이름이 <siteMapNode>가 아닌 경우A child of the <siteMap> has a name other than <siteMapNode>.

또는-or- 잘못된 특성이 <siteMapNode>에 대해 구문 분석된 경우An unexpected attribute is parsed for the <siteMapNode>.

또는-or- <siteMapNode>가 설정된 provider 아래에 하위 요소가 중첩된 경우Sub-elements are nested beneath a <siteMapNode> where the provider is set.

또는-or- roles<siteMapNode>에 잘못된 문자가 포함된 경우The roles of the <siteMapNode> contain characters that are not valid.

또는-or- 고유하지 않은 url에 대해 <siteMapNode>이 구문 분석된 경우A url is parsed for a <siteMapNode> that is not unique.

또는-or- SiteMapNode에 중복된 Key 값이 있는 경우A SiteMapNode was encountered with a duplicate value for Key.

또는-or- 명시적 리소스 식이 포함된 노드에 대해 정의된 ResourceKey 또는 Title 특성에 SiteMapNode 또는 custom이 지정된 경우The ResourceKey or Title was specified on a SiteMapNode or a custom attribute defined for the node contained an explicit resource expression.

또는-or- 명시적 리소스 식이 Title이나 Description 또는 customSiteMapNode 특성에 적용되었지만 명시적 정보가 잘못된 경우An explicit resource expression was applied either to the Title or Description or to a custom attribute of a SiteMapNode but the explicit information was not valid.

또는-or- UrlSiteMapNode을 구문 분석하는 동안 오류가 발생한 경우An error occurred while parsing the Url of a SiteMapNode.

현재 사이트 맵 공급자 컬렉션에서 명명된 공급자를 찾을 수 없는 경우A named provider cannot be found in the current site map providers collection.

사이트 맵 파일을 참조하는 <siteMapNode>siteMapFile에 대한 빈 문자열이 있는 경우A <siteMapNode> referencing a site map file contains an empty string for the siteMapFile.

siteMapFile<siteMapNode>이 실제 경로를 사용하는 경우A siteMapFile of a <siteMapNode> uses a physical path.

또는-or- siteMapFile에 지정된 파일의 가상 경로를 구문 분석하려고 시도하는 동안 오류가 발생한 경우An error occurred while attempting to parse the virtual path to the file specified in the siteMapFile.


다음 코드 예제에서는 XmlSiteMapProvider 클래스의 새 인스턴스를 만들고 초기화 하 여 XML 데이터에서 사이트 맵을 빌드하는 방법을 보여 줍니다.The following code example demonstrates how to create a new instance of the XmlSiteMapProvider class and initialize it to build a site map from XML data.

<%@ 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);  
     // 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 파일을 사용 합니다.The preceding code example uses an XML file that is located in the virtual root of the ASP.NET application. 파일에 다음과 같은 형식:The file has the following format:

     <siteMapNode title="RootNode" description="The root page." url="WebForm1.aspx">  
         <siteMapNode title="CurrentNode" description="Some sub page." url="WebForm2.aspx"/>  


영구 스토리지에서 사이트 맵을 로드하고 빌드하기 위해 BuildSiteMap 메서드가 호출됩니다.The BuildSiteMap method is called to load and build the site map from persistent storage.

보안 트리밍을 사용할 때의 기본 동작은 IsAccessibleToUser의 "주의"를 참조 하십시오.For the default behavior when security trimming is enabled, see "Remarks" in IsAccessibleToUser.

XmlSiteMapProvider 개체가 사이트 맵 데이터를 구문 분석 하 고 로드 한 후에는 로드 된 모든 SiteMapNode 개체 및 SiteMapNodeCollection 컬렉션이 읽기 전용으로 설정 됩니다.After the XmlSiteMapProvider object parses and loads site map data, all loaded SiteMapNode objects and SiteMapNodeCollection collections are made read-only. 경우는 XmlSiteMapProvider 구문 분석는 Url 속성 사이트 맵 파일에서 것 상대 Url 뿐만 아니라 애플리케이션 상대 Url을 애플리케이션 절대 가상 경로로 변환 합니다.When the XmlSiteMapProvider parses the Url property from a site map file, it converts application-relative URLs, as well as relative URLs, to application-absolute virtual paths.

XmlSiteMapProvider는 .sitemap 파일에 대 한 파일 변경 알림을 구독 합니다.The XmlSiteMapProvider subscribes to file change notifications for the .sitemap file. .Sitemap 파일이 변경 되 면 XmlSiteMapProvider 다시 로드 되 고 사이트 맵 구조가 다시 작성 됩니다.If any change is made to the .sitemap file, the XmlSiteMapProvider is reloaded, and the site map structure is rebuilt.

Applies to

See also