방법: 여러 사이트 맵 및 사이트 맵 공급자 구성

업데이트: 2007년 11월

기본적으로 ASP.NET 사이트 탐색은 웹 사이트의 계층 구조가 설명된 Web.sitemap이라는 XML 파일을 사용하여 수행됩니다. 그러나 전체 웹 사이트의 탐색 구조를 설명하기 위해 사이트 맵 파일이나 사이트 맵 공급자를 둘 이상 사용할 수도 있습니다.

예를 들어 자식 사이트 맵을 참조하는 주 사이트 맵이 있을 수 있습니다. 주 사이트 맵은 다음과 같을 수 있습니다.

<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="https://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
  <siteMapNode  title="Home Page"  description="">
    <siteMapNode title="First Level 1"  description="" />
    <siteMapNode  title="First Level 2" description="">
      <siteMapNode  title="Second Level 1" description=""/>
      <siteMapNode  title="Second Level 2" description=""/>
    </siteMapNode>
    <siteMapNode siteMapFile="child.sitemap" />
  </siteMapNode>
</siteMap>

자식 맵은 다음과 같을 수 있습니다.

<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="https://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
  <siteMapNode  title="Child First Level 1"  description="">
    <siteMapNode title="Child Second Level 1"  description="" />
    <siteMapNode  title="Child Second Level 2"  description="" />
    <siteMapNode  title=""  description="" />
  </siteMapNode>
</siteMap>

이 두 사이트 맵에 의해 생성되는 최종 메뉴는 다음과 같이 나타납니다.

Home Page
  First Level 1
  First Level 2
    Second Level 1
    Second Level 2
  Child First Level 1
    Child Second Level 1
    Child Second Level 2

한 사이트에 대해 여러 개의 사이트 맵을 구성하려면 먼저 응용 프로그램의 루트에서 사이트 맵을 구성하고, Web.config 파일에서 루트 공급자를 기본 사이트 맵 공급자로 구성하십시오. 그런 다음 SiteMapNode 개체에서 자식 사이트 맵 또는 공급자를 참조하여 연결합니다.

부모 사이트 맵에서 자식 사이트 맵 파일에 연결하려면

  • 부모 사이트 맵의 탐색 구조에서 자식 사이트 맵을 표시할 위치에 SiteMapNode를 만듭니다.

    예를 들어 기본 XmlSiteMapProvider 클래스를 사용하는 경우 Web.sitemap 파일의 적절한 위치에 다음 SiteMapNode를 추가합니다.

    <siteMapNode siteMapFile="MySiteMap.sitemap" />
    

    siteMapFile 특성은 다음과 같은 형식으로 지정할 수 있습니다.

    • 응용 프로그램 상대 참조(예: ~/MySiteMap.sitemap)

    • 가상 경로(예: /Customers/MySiteMap.sitemap)

    • 현재 사이트 맵 파일의 위치에 상대적인 경로 참조(예: Guests/MySiteMap.sitemap)

      참고:

      siteMapFile 특성을 지정할 때 siteMapNode 요소에 대한 Url, title 또는 description 특성을 제공하지 마십시오.

    사이트 맵 파일을 만드는 방법에 대한 자세한 내용은 ASP.NET 사이트 맵을 참조하십시오.

부모 사이트 맵에서 사용자 지정 사이트 맵 공급자에 연결하려면

  1. 부모 사이트 맵의 탐색 구조에서 자식 사이트 맵을 표시할 위치에 SiteMapNode를 만듭니다.

    예를 들어 기본 XmlSiteMapProvider 클래스를 사용하는 경우 Web.sitemap 파일을 열고 계층 구조의 적절한 위치에 다음 SiteMapNode를 추가합니다.

    <siteMapNode provider="SimpleTextSiteMapProvider" />
    
    참고:

    provider 특성은 Web.config 파일에서 공급자의 name 특성에 해당합니다.

  2. add 요소를 사용하여 Web.config 파일에 사용자 지정 사이트 맵 공급자를 추가합니다.

    다음 코드에서는 SimpleTextSiteMapProvider라는 사용자 지정 공급자를 추가하되 XmlSiteMapProvider는 기본 사이트 맵 공급자로 유지합니다.

    <configuration>
      <!-- other configuration sections -->
      <system.web>
        <!-- other configuration sections -->
        <siteMap defaultProvider="XmlSiteMapProvider">
          <providers>
            <add
              name="SimpleTextSiteMapProvider"
          type="Samples.AspNet.SimpleTextSiteMapProvider,Samples.AspNet"
              siteMapFile = "siteMap.txt" />
          </providers>
        </siteMap>
      </system.web>
    </configuration>
    

    사용자 지정 사이트 맵 공급자 만들기에 대한 자세한 내용은 ASP.NET 사이트 맵 공급자 구현을 참조하십시오.

Web.config 파일에서 여러 사이트 맵 구성

앞의 예제처럼 사이트 맵을 연결하면 여러 사이트 맵에서 하나의 사이트 맵 구조를 만들 수 있습니다. 또는 Web.config 파일에 다른 사이트 맵에 대한 참조를 추가할 수 있습니다. 이 경우 추가된 사이트 맵은 다른 공급자처럼 나타납니다. 웹 사이트의 각 영역에 서로 다른 탐색 구조가 필요한 경우 이 방법이 유용합니다.

Web.config 파일에서 여러 사이트 맵을 구성하려면

  • Web.config 파일에서 siteMap 섹션을 찾고 각 사이트 맵에 대한 add 요소를 만듭니다.

    다음 예제에서는 두 사이트 맵을 추가하는 방법을 보여 줍니다.

    <configuration>
      <!-- other configuration sections -->
      <system.web>
        <!-- other configuration sections -->
        <siteMap defaultProvider="XmlSiteMapProvider">
         <providers>
           <add          name="Company1SiteMap"         type="System.Web.XmlSiteMapProvider"          siteMapFile="~/Company1/Company1.sitemap" />       <add          name="Company2SiteMap"         type="System.Web.XmlSiteMapProvider"          siteMapFile="~/Company2/Company2.sitemap" />
         </providers>
        </siteMap>
      </system.web>
    </configuration>
    

    이 구성에서는 ~/Company1/Company1.sitemap 및 ~/Company2/Company2.sitemap 파일을 탐색 API 멤버 그리고 SiteMapPath, TreeViewMenu 같은 탐색 컨트롤과 함께 사용할 수 있습니다. 그러기 위해서는 관련 SiteMapProvider 속성을 Company1SiteMap 또는 Company2SiteMap으로 설정합니다.

    웹 페이지에 탐색 컨트롤을 추가하는 방법에 대한 자세한 내용은 방법: 간단한 사이트 탐색 추가를 참조하십시오.

참고 항목

작업

방법: 간단한 사이트 탐색 추가

개념

ASP.NET 사이트 맵

ASP.NET 사이트 탐색 공급자

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

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

ASP.NET 사이트 탐색 보안

데이터 액세스 보안

기타 리소스

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