다음을 통해 공유


ASP.NET 사이트 맵 공급자 구현

업데이트: 2007년 11월

ASP.NET 사이트 탐색은 SiteMapPath, TreeViewMenu 컨트롤 같이 웹 페이지에 탐색 구조를 표시하는 여러 웹 서버 컨트롤을 제공합니다. 이러한 웹 서버 컨트롤은 ASP.NET 기본 사이트 맵 공급자 또는 XmlSiteMapProvider 클래스를 사용하여 XML 형식의 Web.sitemap 파일에서 사이트 맵 정보를 읽습니다.

또는 사용자 고유의 사이트 맵 공급자를 구현할 수도 있습니다. 사용자 지정 사이트 맵 공급자를 만드는 주된 이유는 다음과 같은 세 가지입니다.

  • ASP.NET 기본 사이트 맵 공급자에서 지원되지 않는 데이터 소스에 사이트 맵 정보를 저장하기 위해. 예를 들어 Visual FoxPro 데이터베이스, Oracle 데이터베이스 또는 다른 데이터 소스에 사이트 맵 데이터를 저장할 수 있습니다.

  • Web.sitemap 파일에 사용되는 것과는 다른 스키마를 사용하여 탐색 정보를 관리하기 위해. 예를 들어 기존 구현에서 사이트 맵 데이터를 저장할 수 있습니다.

  • 동적 사이트 맵 구조를 사용하기 위해. 예를 들어 각 클라이언트 계정을 통해 서로 다른 사이트 맵을 확인해야 할 수 있습니다.

보안 정보:

사이트 맵 데이터를 .sitemap 이외의 파일 이름 확장명을 가진 파일에 저장하도록 사용자 지정 사이트 맵 공급자를 구현하면 보안 문제가 발생할 수 있습니다. 기본적으로 ASP.NET은 .sitemap처럼 확장명이 알려진 파일을 클라이언트가 다운로드하지 못하도록 구성되어 있습니다. 데이터를 보호하려면 .sitemap 이외의 파일 이름 확장명을 가진 모든 사용자 지정 사이트 맵 데이터 파일을 App_Data 폴더에 저장합니다. 자세한 내용은 ASP.NET 사이트 탐색 보안을 참조하십시오.

필수 클래스

사이트 맵 공급자를 구현하려면 System.Web 네임스페이스의 SiteMapProvider 추상 클래스에서 상속받는 클래스를 만든 다음 SiteMapProvider 클래스에 의해 노출되는 추상 멤버를 구현합니다. 이 항목에서는 SiteMapProvider 추상 클래스에서 구현해야 하는 필수 속성 및 메서드를 설명합니다. 각 멤버의 구현을 검토하려면 방법: ASP.NET 사이트 맵 공급자 구현에서 Microsoft Access 및 텍스트 기반 사이트 맵 공급자에 대해 제공된 예제 코드를 참조하십시오.

참고:

SiteMapProvider 클래스는 사이트 맵 데이터 구조에 하나의 루트 노드만 존재할 수 있도록 하는 한 가지 제약 조건을 적용합니다. 또한 기본 ASP.NET 사이트 맵 공급자 구현에서는 URL이 공급자 범위 내에서 고유하도록 지정되어 있지만 사용자 지정 사이트 맵 공급자에서는 이러한 제한이 없습니다.

필수 SiteMapProvider 멤버

다음 표에서는 사용자 지정 사이트 맵 공급자를 구현하는 데 필요한 메서드만을 보여 줍니다. SiteMapProvider 기본 클래스는 최소 구현을 제공합니다.

메서드

설명

FindSiteMapNode

페이지를 나타내는 SiteMapNode 클래스의 인스턴스를 검색합니다. 이 메서드는 오버로드됩니다.

GetChildNodes

SiteMapNode 클래스의 특정 인스턴스에 대한 자식 노드를 검색합니다.

GetParentNode

SiteMapNode 클래스의 특정 인스턴스에 대한 부모 노드를 검색합니다.

GetRootNodeCore

현재 공급자가 관리하는 모든 노드의 루트 노드를 검색합니다. 이 메서드는 공급자가 탐색 데이터를 로드했는지 확인하기 위해 다양한 사이트 탐색 클래스에서 내부적으로 호출됩니다. 이 메서드는 null 노드를 반환하지 않아야 합니다.

XmlSiteMapProvider 클래스의 의미는 적절하지만 Web.sitemap 파일이 아닌 다른 데이터 저장소를 사용하려는 경우 SiteMapProvider 클래스 대신 StaticSiteMapProvider 클래스에서 파생시켜야 합니다. 그렇지 않은 경우 AddNodeRemoveNode 메서드 등의 일부 메서드에서는 자신이 구현되지 않으면 NotImplementedException을 throw합니다. StaticSiteMapProvider 클래스는 노드를 저장 및 검색하는 데 필요한 모든 내부 논리를 제공하므로 GetRootNodeCore 메서드 및 추상 BuildSiteMap 메서드만 구현하면 됩니다. GetRootNodeCore 메서드를 사용하면 BuildSiteMap 메서드를 간단히 호출할 수 있습니다.

사용자 지정 멤버

SiteMapProvider 추상 클래스에서 제공되지 않는 추가 기능을 사용하여 사이트 맵 공급자 인터페이스를 확장해야 하는 경우도 있습니다. 사용자 지정 공급자를 기본 공급자로 구성하고 Provider의 반환 값을 사용자 지정 공급자의 형식으로 캐스팅하면 SiteMap 클래스의 Provider 속성을 사용하여 사이트 맵 공급자에 추가하는 모든 공용 멤버에 액세스할 수 있습니다.

참고 항목

작업

방법: ASP.NET 사이트 맵 공급자 구현

개념

ASP.NET 사이트 탐색 개요

ASP.NET 사이트 맵 보안 트리밍

ASP.NET 사이트 탐색 보안

데이터 액세스 보안

기타 리소스

호스팅된 환경에서의 ASP.NET 응용 프로그램 보안