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 값이 있는 경우

또는 명시적 리소스 식이 포함된 노드에 대해 정의된 ResourceKey 또는 custom 특성에 Title 또는 SiteMapNode이 지정된 경우

또는 명시적 리소스 식이 Title이나 Description 또는 SiteMapNodecustom 특성에 적용되었지만 명시적 정보가 잘못된 경우

또는 UrlSiteMapNode을 구문 분석하는 동안 오류가 발생한 경우

현재 사이트 맵 공급자 컬렉션에서 명명된 공급자를 찾을 수 없는 경우

사이트 맵 파일을 참조하는 <siteMapNode>siteMapFile에 대한 빈 문자열이 있는 경우

siteMapFile<siteMapNode>이 실제 경로를 사용하는 경우

또는 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 파일에 대한 파일 변경 알림을 구독합니다. .sitemap 파일이 변경되면 가 다시 XmlSiteMapProvider 로드되고 사이트 맵 구조가 다시 작성됩니다.

적용 대상

추가 정보