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 또는 custom
특성에 Title 또는 SiteMapNode이 지정된 경우
또는
명시적 리소스 식이 Title이나 Description 또는 SiteMapNode의 custom
특성에 적용되었지만 명시적 정보가 잘못된 경우
또는 Url의 SiteMapNode을 구문 분석하는 동안 오류가 발생한 경우
현재 사이트 맵 공급자 컬렉션에서 명명된 공급자를 찾을 수 없는 경우
사이트 맵 파일을 참조하는 <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 로드되고 사이트 맵 구조가 다시 작성됩니다.