StaticSiteMapProvider StaticSiteMapProvider StaticSiteMapProvider StaticSiteMapProvider Class

정의

추상 SiteMapProvider 클래스의 부분적 구현 상태로, ASP.NET에서 기본 사이트 맵 공급자인 XmlSiteMapProvider 클래스에 대한 기본 클래스로 작동합니다.Serves as a partial implementation of the abstract SiteMapProvider class and serves as a base class for the XmlSiteMapProvider class, which is the default site map provider in ASP.NET.

public ref class StaticSiteMapProvider abstract : System::Web::SiteMapProvider
public abstract class StaticSiteMapProvider : System.Web.SiteMapProvider
type StaticSiteMapProvider = class
    inherit SiteMapProvider
Public MustInherit Class StaticSiteMapProvider
Inherits SiteMapProvider
상속
파생

예제

다음 코드 예제에서는 어떻게 확장할 수는 StaticSiteMapProvider 사이트 맵 공급자 Microsoft Access를 사용 하는 클래스입니다.The following code example demonstrates how you to extend the StaticSiteMapProvider class to use Microsoft Access as a site map provider. AccessSiteMapProvider 클래스는 간단 하 고 심층 수준-1-계층이 하나만 지 원하는 사이트 맵 공급자입니다.The AccessSiteMapProvider class is a site map provider that supports only a simple, one-level-deep hierarchy. 사이트 맵 데이터에 저장 된 테이블에 다음과 같은 구조:The table that the site map data is stored in has the following structure:

NODEID URL            NAME       PARENTNODEID  
 ---------------------------------------------  
 1      default.aspx   Default    <NULL>  
 2      catalog.aspx   Catalog    1  
 3      aboutus.aspx   Contact Us 1  
...  

AccessSiteMapProvider 에서 파생 된 클래스를 StaticSiteMapProvider 클래스 및 기본 SQL 쿼리를 사용 하 여 Microsoft Access 데이터베이스에서 해당 정보를 검색 하며 OleDbCommandOleDbDataReader 개체.The AccessSiteMapProvider class is derived from the StaticSiteMapProvider class and retrieves its information from a Microsoft Access database using basic SQL queries and the OleDbCommand and OleDbDataReader objects.

#using <System.Data.dll>
#using <System.Transactions.dll>
#using <System.EnterpriseServices.dll>
#using <System.dll>
#using <System.Web.dll>
#using <System.Configuration.dll>

using namespace System;
using namespace System::Collections;
using namespace System::Collections::Specialized;
using namespace System::Configuration;
using namespace System::Data;
using namespace System::Data::OleDb;
using namespace System::Security::Permissions;
using namespace System::Web;

/// An extremely simple AccessSiteMapProvider that only supports a
/// site map node hierarchy 1 level deep.

[AspNetHostingPermission(SecurityAction::Demand,Level=AspNetHostingPermissionLevel::Minimal)]
public ref class AccessSiteMapProvider: public StaticSiteMapProvider
{
private:
   SiteMapNode ^ rootNode;
   OleDbConnection^ accessConnection;

   // This string is case sensitive.
   String^ AccessConnectionStringName;

public:
   // Implement a default constructor.
   AccessSiteMapProvider()
   {
      initialized = false;
      AccessConnectionStringName = "accessSiteMapConnectionString";
   }


private:

   // Some basic state to help track the initialization state of the provider.
   bool initialized;

public:

   property bool IsInitialized 
   {
      virtual bool get()
      {
         return initialized;
      }

   }

   property SiteMapNode ^ RootNode 
   {

      // Return the root node of the current site map.
      virtual SiteMapNode ^ get() override
      {
         SiteMapNode ^ temp = nullptr;
         temp = BuildSiteMap();
         return temp;
      }

   }

protected:

   virtual SiteMapNode ^ GetRootNodeCore() override
   {
      return RootNode;
   }


public:

   // Initialize is used to initialize the properties and any state that the
   // AccessProvider holds, but is not used to build the site map.
   // The site map is built when the BuildSiteMap method is called.
   virtual void Initialize( String^ name, NameValueCollection^ attributes ) override
   {
      if ( IsInitialized )
            return;

      StaticSiteMapProvider::Initialize( name, attributes );
      
      // Create and test the connection to the Microsoft Access database.
      // Retrieve the Value of the Access connection string from the
      // attributes NameValueCollection.
      String^ connectionString = attributes[ AccessConnectionStringName ];
      if ( nullptr == connectionString || connectionString->Length == 0 )
            throw gcnew Exception( "The connection string was not found." );
      else
            accessConnection = gcnew OleDbConnection( connectionString );

      initialized = true;
   }


protected:

   ///
   /// SiteMapProvider and StaticSiteMapProvider methods that this derived class must override.
   ///
   // Clean up any collections or other state that an instance of this may hold.
   virtual void Clear() override
   {
      System::Threading::Monitor::Enter( this );
      try
      {
         rootNode = nullptr;
         StaticSiteMapProvider::Clear();
      }
      finally
      {
         System::Threading::Monitor::Exit( this );
      }

   }


public:

   // Build an in-memory representation from persistent
   // storage, and return the root node of the site map.
   virtual SiteMapNode ^ BuildSiteMap() override
   {
      // Since the SiteMap class is static, make sure that it is
      // not modified while the site map is built.
      System::Threading::Monitor::Enter( this );
      try
      {
         
         // If there is no initialization, this method is being
         // called out of order.
         if (  !IsInitialized )
         {
            throw gcnew Exception( "BuildSiteMap called incorrectly." );
         }
         
         // If there is no root node, then there is no site map.
         if ( nullptr == rootNode )
         {
            
            // Start with a clean slate
            Clear();
            
            // Select the root node of the site map from Microsoft Access.
            int rootNodeId = -1;
            if ( accessConnection->State == ConnectionState::Closed )
               accessConnection->Open();
            
            OleDbCommand^ rootNodeCommand = gcnew OleDbCommand
               ("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid IS NULL", accessConnection);
            OleDbDataReader^ rootNodeReader = rootNodeCommand->ExecuteReader();
            if ( rootNodeReader->HasRows )
            {
               rootNodeReader->Read();
               rootNodeId = rootNodeReader->GetInt32( 0 );
               
               // Create a SiteMapNode that references the current StaticSiteMapProvider.
               rootNode = gcnew SiteMapNode(this, rootNodeId.ToString(), 
                  rootNodeReader->GetString( 1 ),rootNodeReader->GetString( 2 ));
            }
            else
               return nullptr;
            rootNodeReader->Close();
            
            // Select the child nodes of the root node.
            OleDbCommand^ childNodesCommand = gcnew OleDbCommand
               ("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid = ?", accessConnection);
            OleDbParameter^ rootParam = gcnew OleDbParameter( "parentid", OleDbType::Integer);
            rootParam->Value = rootNodeId;
            childNodesCommand->Parameters->Add( rootParam );
            OleDbDataReader^ childNodesReader = childNodesCommand->ExecuteReader();
            if ( childNodesReader->HasRows )
            {
               SiteMapNode ^ childNode = nullptr;
               while ( childNodesReader->Read() )
               {
                  childNode = gcnew SiteMapNode( this, 
					  System::Convert::ToString(childNodesReader->GetInt32( 0 )),
                     childNodesReader->GetString( 1 ),
                     childNodesReader->GetString( 2 ) 
                  );
                  // Use the SiteMapNode AddNode method to add
                  // the SiteMapNode to the ChildNodes collection.
                  AddNode( childNode, rootNode );
               }
            }
            childNodesReader->Close();
            accessConnection->Close();
         }
         return rootNode;
      }
      finally
      {
         System::Threading::Monitor::Exit( this );
      }

   }

};

namespace Samples.AspNet.CS.Controls {

    using System;
    using System.Collections;
    using System.Collections.Specialized;
    using System.Data;
    using System.Data.OleDb;
    using System.Security.Permissions;
    using System.Web;

    /// An extremely simple AccessSiteMapProvider that only supports a
    /// site map node hierarchy 1 level deep.
    [AspNetHostingPermission(SecurityAction.Demand, Level=AspNetHostingPermissionLevel.Minimal)]
    public class AccessSiteMapProvider : StaticSiteMapProvider
    {
        private SiteMapNode rootNode =  null;
        private OleDbConnection accessConnection = null;

        // This string is case sensitive.
        private string AccessConnectionStringName = "accessSiteMapConnectionString";

        // Implement a default constructor.
        public AccessSiteMapProvider () { }

        // Some basic state to help track the initialization state of the provider.
        private bool initialized = false;
        public virtual bool IsInitialized {
            get {
                return initialized;
            }
        }
        // Return the root node of the current site map.
        public override SiteMapNode RootNode {
            get {
                SiteMapNode temp = null;
                temp = BuildSiteMap();
                return temp;
            }
        }
        protected override SiteMapNode GetRootNodeCore() {
            return RootNode;
        }
        // Initialize is used to initialize the properties and any state that the
        // AccessProvider holds, but is not used to build the site map.
        // The site map is built when the BuildSiteMap method is called.
        public override void Initialize(string name, NameValueCollection attributes) {
            if (IsInitialized)
                return;

            base.Initialize(name, attributes);

            // Create and test the connection to the Microsoft Access database.

            // Retrieve the Value of the Access connection string from the
            // attributes NameValueCollection.
            string connectionString = attributes[AccessConnectionStringName];

            if (null == connectionString || connectionString.Length == 0)
                throw new Exception ("The connection string was not found.");
            else
                accessConnection = new OleDbConnection(connectionString);

            initialized = true;
        }

        ///
        /// SiteMapProvider and StaticSiteMapProvider methods that this derived class must override.
        ///
        // Clean up any collections or other state that an instance of this may hold.
        protected override void Clear() {
            lock (this) {
                rootNode = null;
                base.Clear();
            }
        }

        // Build an in-memory representation from persistent
        // storage, and return the root node of the site map.
        public override SiteMapNode BuildSiteMap() {

            // Since the SiteMap class is static, make sure that it is
            // not modified while the site map is built.
            lock(this) {

                // If there is no initialization, this method is being
                // called out of order.
                if (! IsInitialized) {
                    throw new Exception("BuildSiteMap called incorrectly.");
                }

                // If there is no root node, then there is no site map.
                if (null == rootNode) {
                    // Start with a clean slate
                    Clear();

                    // Select the root node of the site map from Microsoft Access.
                    int rootNodeId = -1;

                    if (accessConnection.State == ConnectionState.Closed)
                        accessConnection.Open();
                    OleDbCommand rootNodeCommand =
                        new OleDbCommand("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid IS NULL",
                                         accessConnection);
                    OleDbDataReader rootNodeReader = rootNodeCommand.ExecuteReader();

                    if(rootNodeReader.HasRows) {
                        rootNodeReader.Read();
                        rootNodeId = rootNodeReader.GetInt32(0);
                        // Create a SiteMapNode that references the current StaticSiteMapProvider.
                        rootNode   = new SiteMapNode(this,
                                                     rootNodeId.ToString(),
                                                     rootNodeReader.GetString(1),
                                                     rootNodeReader.GetString(2));

                    }
                    else return null;

                    rootNodeReader.Close();
                    // Select the child nodes of the root node.
                    OleDbCommand childNodesCommand =
                        new OleDbCommand("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid = ?",
                                         accessConnection);
                    OleDbParameter rootParam = new OleDbParameter("parentid", OleDbType.Integer);
                    rootParam.Value = rootNodeId;
                    childNodesCommand.Parameters.Add(rootParam);

                    OleDbDataReader childNodesReader = childNodesCommand.ExecuteReader();

                    if (childNodesReader.HasRows) {

                        SiteMapNode childNode = null;
                        while(childNodesReader.Read()) {
                            childNode =  new SiteMapNode(this,
                                                         childNodesReader.GetInt32(0).ToString(),
                                                         childNodesReader.GetString(1),
                                                         childNodesReader.GetString(2));

                            // Use the SiteMapNode AddNode method to add
                            // the SiteMapNode to the ChildNodes collection.
                            AddNode(childNode, rootNode);
                        }
                    }

                    childNodesReader.Close();
                    accessConnection.Close();
                }
                return rootNode;
            }
        }
    }
}
Imports System.Collections
Imports System.Collections.Specialized
Imports System.Data
Imports System.Data.OleDb
Imports System.Security.Permissions
Imports System.Web

Namespace Samples.AspNet.VB.Controls
 
    ' An extremely simple AccessSiteMapProvider that only supports a
    ' site map node hierarchy one level deep.
    <AspNetHostingPermission(SecurityAction.Demand, Level:=AspNetHostingPermissionLevel.Minimal)> _
    Public Class AccessSiteMapProvider
        Inherits StaticSiteMapProvider

        Private aRootNode As SiteMapNode = Nothing
        Private accessConnection As OleDbConnection = Nothing

        ' This string is case sensitive.
        Private AccessConnectionStringName As String = "accessSiteMapConnectionString"

        ' Implement a default constructor.
        Public Sub New()
        End Sub 'New

        ' Some basic state to help track the initialization state of the provider.
        Private initialized As Boolean = False

        Public Overridable ReadOnly Property IsInitialized() As Boolean
            Get
                Return initialized
            End Get
        End Property

        ' Return the root node of the current site map.
        Public Overrides ReadOnly Property RootNode() As SiteMapNode
            Get
                Return BuildSiteMap()
            End Get
        End Property

        Protected Overrides Function GetRootNodeCore() As SiteMapNode
            Return RootNode
        End Function

        ' Initialize is used to initialize the properties and any state that the
        ' AccessProvider holds, but is not used to build the site map.
        ' The site map is built when the BuildSiteMap method is called.
        Public Overrides Sub Initialize(ByVal name As String, ByVal attributes As NameValueCollection)
            If IsInitialized Then
                Return
            End If
            MyBase.Initialize(name, attributes)

            ' Create and test the connection to the Microsoft Access database.
            ' Retrieve the Value of the Access connection string from the
            ' attributes NameValueCollection.
            Dim connectionString As String = attributes(AccessConnectionStringName)

            If Nothing = connectionString OrElse connectionString.Length = 0 Then
                Throw New Exception("The connection string was not found.")
            Else
                accessConnection = New OleDbConnection(connectionString)
            End If
            initialized = True
        End Sub 'Initialize

        ' SiteMapProvider and StaticSiteMapProvider methods that this derived class must override.
        '
        ' Clean up any collections or other state that an instance of this may hold.
        Protected Overrides Sub Clear()
            SyncLock Me
                aRootNode = Nothing
                MyBase.Clear()
            End SyncLock
        End Sub 'Clear

        ' Build an in-memory representation from persistent
        ' storage, and return the root node of the site map.
        Public Overrides Function BuildSiteMap() As SiteMapNode

            ' Since the SiteMap class is static, make sure that it is
            ' not modified while the site map is built.
            SyncLock Me

                ' If there is no initialization, this method is being
                ' called out of order.
                If Not IsInitialized Then
                    Throw New Exception("BuildSiteMap called incorrectly.")
                End If

                ' If there is no root node, then there is no site map.
                If aRootNode Is Nothing Then
                    ' Start with a clean slate
                    Clear()

                    ' Select the root node of the site map from Microsoft Access.
                    Dim rootNodeId As Integer = -1

                    If accessConnection.State = ConnectionState.Closed Then
                        accessConnection.Open()
                    End If
                    Dim rootNodeCommand As New OleDbCommand("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid IS NULL", accessConnection)
                    Dim rootNodeReader As OleDbDataReader = rootNodeCommand.ExecuteReader()

                    If rootNodeReader.HasRows Then
                        rootNodeReader.Read()
                        rootNodeId = rootNodeReader.GetInt32(0)
                        ' Create a SiteMapNode that references the current StaticSiteMapProvider.
                        aRootNode = New SiteMapNode(Me, rootNodeId.ToString(), rootNodeReader.GetString(1), rootNodeReader.GetString(2))
                    Else
                        Return Nothing
                    End If
                    rootNodeReader.Close()
                    ' Select the child nodes of the root node.
                    Dim childNodesCommand As New OleDbCommand("SELECT nodeid, url, name FROM SiteMap WHERE parentnodeid = ?", accessConnection)
                    Dim rootParam As New OleDbParameter("parentid", OleDbType.Integer)
                    rootParam.Value = rootNodeId
                    childNodesCommand.Parameters.Add(rootParam)

                    Dim childNodesReader As OleDbDataReader = childNodesCommand.ExecuteReader()

                    If childNodesReader.HasRows Then

                        Dim childNode As SiteMapNode = Nothing
                        While childNodesReader.Read()
                            childNode = New SiteMapNode(Me, _
                            childNodesReader.GetInt32(0).ToString(), _
                            childNodesReader.GetString(1), _
                            childNodesReader.GetString(2))

                            ' Use the SiteMapNode AddNode method to add
                            ' the SiteMapNode to the ChildNodes collection.
                            AddNode(childNode, aRootNode)
                        End While
                    End If

                    childNodesReader.Close()
                    accessConnection.Close()
                End If
                Return aRootNode
            End SyncLock

        End Function 'BuildSiteMap

    End Class 'AccessSiteMapProvider

End Namespace

마지막으로 AccessSiteMapProvider 다음 Web.config 파일에서 기본 공급자로 구성 됩니다.Finally, the AccessSiteMapProvider is configured as the default provider in the following Web.config file.

<configuration>  
  <system.web>  
    <siteMap defaultProvider="AccessSiteMapProvider">  
     <providers>  
       <add   
         name="AccessSiteMapProvider"  
         type="Samples.AspNet.AccessSiteMapProvider,Samples.AspNet "  
         accessSiteMapConnectionString="PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=sitemap.mdb "/>  
     </providers>   
    </siteMap>  
  </system.web>  
</configuration>  

설명

합니다 StaticSiteMapProvider 클래스는 추상 부분적으로 구현 SiteMapProvider 클래스 및 두 개의 추가 메서드를 제공: AddNode 하 고 RemoveNode, 추상 뿐만 아니라 BuildSiteMap 및 보호 된 Clear 메서드.The StaticSiteMapProvider class is a partial implementation of the abstract SiteMapProvider class and supplies two additional methods: AddNode and RemoveNode, as well as the abstract BuildSiteMap and protected Clear methods.

StaticSiteMapProvider 클래스는 영구 스토리지에 저장된 사이트 맵을 메모리에 저장된 사이트 맵으로 변환하는 사이트 맵 공급자(예: XmlSiteMapProvider) 작성을 지원합니다.The StaticSiteMapProvider class supports writing a site map provider (for example, an XmlSiteMapProvider) that translates a site map that is stored in persistent storage to one that is stored in memory. 합니다 StaticSiteMapProvider 저장 및 검색에 대 한 기본 구현을 제공 하는 클래스 SiteMapNode 개체입니다.The StaticSiteMapProvider class provides basic implementations for storing and retrieving SiteMapNode objects.

합니다 SiteMapProviderStaticSiteMapProvider 클래스 사이트 맵 공급자를 다른 사이트 맵 공급자를 사용 하 여 계층 관계를 가질 수 있는 사이트 맵 공급자 계층의 개념을 지원 합니다.The SiteMapProvider and StaticSiteMapProvider classes support the concept of a site map provider hierarchy, where a site map provider can have a hierarchical relationship with other site map providers. 이 패턴을 사용 하 여 구현 되는 RootProviderParentProvider 속성입니다.This pattern is implemented with the RootProvider and ParentProvider properties.

StaticSiteMapProvider 저장소 클래스 해당 SiteMapNode 해시 테이블에 있는 개체를 내부적으로 사용 하는 SiteMapNode.Url 키로 사이트 맵 노드를 나타내는 페이지의 속성입니다.The StaticSiteMapProvider class stores its SiteMapNode objects in hash tables and internally uses the SiteMapNode.Url property of the pages, represented by site map nodes, as keys. (사이트 맵 노드를 URL을 지정 하지 않는 경우 추적 됩니다 자동으로 생성 된 고유 키를 사용 합니다.) 결과적으로 동일한 URL 사용 하 여 사이트 맵 노드를 두 번 이상 사용 여기서 사이트 맵 노드 수는 없습니다.(If a site map node does not specify a URL, it is tracked using an automatically generated unique key.) As a result, you cannot have site map nodes wherein a site map node with the same URL is used more than once. 예를 들어, 다음 코드 예제에 설명 된 사이트 맵 노드를 로드 하려고 합니다 XmlSiteMapProvider 클래스에서 파생 되는 모든 사이트 맵 공급자 또는 기본 ASP.NET 사이트 맵 공급자를 StaticSiteMapProvider 있으므로 클래스 작동 하지 것입니다는 AboutUs.aspx 페이지가 두 번 이상 사용 됩니다.For example, attempting to load the site map node illustrated in the following code example with the XmlSiteMapProvider class, which is the default ASP.NET site map provider, or any site map provider that is derived from the StaticSiteMapProvider class will not work because the AboutUs.aspx page is used more than once.

<sitemap>  
  <sitemapnode title="Home" description="Home" url="default.aspx" >  
    <sitemapnode title="Catalog" description="Our catalog" url="catalog.aspx"/>  
    <sitemapnode title="About Us" description="All about our company" url="aboutus.aspx"/>  
    <sitemapnode title="Driving Directions" description="Directions to our store" url="aboutus.aspx"/>  
  </sitemapnode>  
</sitemap>  

확장 하는 경우는 StaticSiteMapProvider 클래스는 세 가지 가장 중요 한 메서드는 합니다 GetRootNodeCoreInitialize, 및 BuildSiteMap 메서드.If you are extending the StaticSiteMapProvider class, the three most important methods are the GetRootNodeCore, Initialize, and BuildSiteMap methods. ClearFindSiteMapNode 메서드 한 대부분의 사용자 지정 사이트 맵 공급자 구현에 대 한 충분 한 기본 구현을 제공 합니다.The Clear and FindSiteMapNode methods have default implementations that are sufficient for most custom site map provider implementations.

Initialize 메서드가 호출 되어 파생된 사이트 맵 공급자, 사이트 맵 데이터를 로드 하는 데 필요한 모든 리소스를 포함 하 여 초기화 하지만 메모리에서 사이트 맵 노드를 작성 하려고지 않습니다.The Initialize method is called to initialize derived site map providers, including any resources that are required to load site map data, but it does attempt to build the site map node in memory. 파생된 클래스를 사용 중인 경우 파일을 사이트 맵 데이터를 저장할 파일 초기화를 여기서 수행할 수 있습니다.If your derived class is using files to store site map data, any file initialization can be performed here. 사이트 맵 노드를 다른 유형의 관계형 데이터베이스와 같은 데이터 저장소를 사용 하는 경우 연결을 초기화할 수행할 수 있습니다 같습니다.If the site map node uses some other type of data store, such as a relational database, initializing a connection might be performed here. 와 같은 파일 이름 또는 연결 문자열 구성에서 사이트 맵 공급자 요소에 배치 된 ASP.NET 구성 시스템에서 처리 되 고 전달 된 추가 특성을 Initialize 메서드는 attributes 매개 변수입니다.Additional attributes, such as file names or connection strings that are placed on the site map provider element in the configuration are processed by the ASP.NET configuration system and passed to the Initialize method with the attributes parameter.

BuildSiteMap 메서드는 StaticSiteMapProvider 클래스에서 파생된 모든 클래스에서 재정의해야 하며 영구 스토리지에서 사이트 맵 노드를 로드하여 내부 표현으로 변환하도록 호출됩니다.The BuildSiteMap method must be overridden by all classes that are derived from the StaticSiteMapProvider class and is called to load the site map node from persistent storage and convert it to an internal representation. BuildSiteMap 메서드는 내부적으로 다양 한 기본 멤버 구현에는 StaticSiteMapProviderXmlSiteMapProvider 클래스입니다.The BuildSiteMap method is called internally in many of the default member implementations of the StaticSiteMapProvider and XmlSiteMapProvider classes. 고유한 사이트 맵 공급자를 구현 하는 경우, 사이트 맵 데이터 처리에 대 한 후속 호출을 한 번 발생 하는지 확인 합니다 BuildSiteMap 사이트 맵 정보 이미 로드 된 경우 메서드가 즉시 반환 합니다.If you implement your own site map provider, ensure that site map data processing occurs once and subsequent calls to the BuildSiteMap method return immediately, if site map information has already been loaded. 구현 하는 경우는 BuildSiteMap 메서드를 여러 동시 페이지 요청 사이트 맵 정보를 로드 하는 여러 호출에서 직접 발생할 수 있으므로 스레드로부터 안전한 지, 인지 확인 합니다.When you implement the BuildSiteMap method, ensure it is thread safe, as multiple concurrent page requests can result indirectly in multiple calls to load site map information. 사이트 맵 인프라에서 사용자의 역할에 따라 표시 사이트 맵 정보를 지원 합니다.The site map infrastructure supports displaying site map information based on the user's role. 에 따라 합니다 Roles 개별 지 속성 SiteMapNode 개체를 다른 사용자에 대 한 다른 탐색 구조가 있을 수 있습니다.Depending on the Roles property that are supported by the individual SiteMapNode objects, a different navigation structure can exist for different users. 사이트의 기본 구현을 맵의 노드 검색 멤버를 StaticSiteMapProvider 클래스 보안 조정을 자동으로 호출 하 여 수행 합니다 IsAccessibleToUser 메서드.The default implementations of the site map node retrieval members of the StaticSiteMapProvider class perform security trimming automatically by calling the IsAccessibleToUser method.

합니다 AddNode, ClearRemoveNode 메서드는 스레드로부터 안전한 방식으로 사이트 맵 노드를 추적 하는 데 사용 되는 내부 컬렉션을 조작 합니다.The AddNode, Clear and RemoveNode methods manipulate the internal collections that are used to track site map nodes in a thread-safe manner.

상속자 참고

상속 하는 경우는 StaticSiteMapProvider 클래스에 다음 멤버를 재정의 해야 합니다: BuildSiteMap()합니다.When you inherit from the StaticSiteMapProvider class, you must override the following member: BuildSiteMap().

생성자

StaticSiteMapProvider() StaticSiteMapProvider() StaticSiteMapProvider() StaticSiteMapProvider()

StaticSiteMapProvider 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the StaticSiteMapProvider class.

메서드

AddNode(SiteMapNode) AddNode(SiteMapNode) AddNode(SiteMapNode) AddNode(SiteMapNode)

사이트 맵 공급자가 유지 관리하는 노드 컬렉션에 SiteMapNode 개체를 추가합니다.Adds a SiteMapNode object to the node collection that is maintained by the site map provider.

(Inherited from SiteMapProvider)
AddNode(SiteMapNode, SiteMapNode) AddNode(SiteMapNode, SiteMapNode) AddNode(SiteMapNode, SiteMapNode) AddNode(SiteMapNode, SiteMapNode)

사이트 맵 공급자가 유지 관리하는 컬렉션에 SiteMapNode를 추가하고 SiteMapNode 개체 간 부모/자식 관계를 설정합니다.Adds a SiteMapNode to the collections that are maintained by the site map provider and establishes a parent/child relationship between the SiteMapNode objects.

BuildSiteMap() BuildSiteMap() BuildSiteMap() BuildSiteMap()

파생 클래스에서 재정의되면 영구 스토리지에서 사이트 맵 정보를 로드한 후 메모리에 빌드합니다.When overridden in a derived class, loads the site map information from persistent storage and builds it in memory.

Clear() Clear() Clear() Clear()

StaticSiteMapProvider가 상태의 일부로 추적하는 하위 및 상위 사이트 맵 노드의 컬렉션에서 모든 요소를 제거합니다.Removes all elements in the collections of child and parent site map nodes that the StaticSiteMapProvider tracks as part of its state.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

지정한 개체와 현재 개체가 같은지 여부를 확인합니다.Determines whether the specified object is equal to the current object.

(Inherited from Object)
FindSiteMapNode(HttpContext) FindSiteMapNode(HttpContext) FindSiteMapNode(HttpContext) FindSiteMapNode(HttpContext)

지정한 SiteMapNode 개체를 사용하여 현재 요청된 페이지를 나타내는 HttpContext 개체를 검색합니다.Retrieves a SiteMapNode object that represents the currently requested page using the specified HttpContext object.

(Inherited from SiteMapProvider)
FindSiteMapNode(String) FindSiteMapNode(String) FindSiteMapNode(String) FindSiteMapNode(String)

지정된 URL의 페이지를 나타내는 SiteMapNode 개체를 검색합니다.Retrieves a SiteMapNode object that represents the page at the specified URL.

FindSiteMapNodeFromKey(String) FindSiteMapNodeFromKey(String) FindSiteMapNodeFromKey(String) FindSiteMapNodeFromKey(String)

지정된 키를 기반으로 SiteMapNode 개체를 검색합니다.Retrieves a SiteMapNode object based on a specified key.

GetChildNodes(SiteMapNode) GetChildNodes(SiteMapNode) GetChildNodes(SiteMapNode) GetChildNodes(SiteMapNode)

특정 SiteMapNode 개체의 하위 사이트 맵 노드를 검색합니다.Retrieves the child site map nodes of a specific SiteMapNode object.

GetCurrentNodeAndHintAncestorNodes(Int32) GetCurrentNodeAndHintAncestorNodes(Int32) GetCurrentNodeAndHintAncestorNodes(Int32) GetCurrentNodeAndHintAncestorNodes(Int32)

현재 요청된 페이지의 노드를 검색하고 현재 페이지의 부모 및 상위 사이트 맵 노드를 페치할 때 사이트 맵 공급자에 최적화된 조회 방법을 제공합니다.Provides an optimized lookup method for site map providers when retrieving the node for the currently requested page and fetching the parent and ancestor site map nodes for the current page.

(Inherited from SiteMapProvider)
GetCurrentNodeAndHintNeighborhoodNodes(Int32, Int32) GetCurrentNodeAndHintNeighborhoodNodes(Int32, Int32) GetCurrentNodeAndHintNeighborhoodNodes(Int32, Int32) GetCurrentNodeAndHintNeighborhoodNodes(Int32, Int32)

현재 요청된 페이지의 노드를 검색하고 현재 노드와 근접한 위치에서 사이트 맵 노드를 페치할 때 사이트 맵 공급자에 최적화된 조회 방법을 제공합니다.Provides an optimized lookup method for site map providers when retrieving the node for the currently requested page and fetching the site map nodes in the proximity of the current node.

(Inherited from SiteMapProvider)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

기본 해시 함수로 작동합니다.Serves as the default hash function.

(Inherited from Object)
GetParentNode(SiteMapNode) GetParentNode(SiteMapNode) GetParentNode(SiteMapNode) GetParentNode(SiteMapNode)

특정 SiteMapNode 개체의 상위 사이트 맵 노드를 검색합니다.Retrieves the parent site map node of a specific SiteMapNode object.

GetParentNodeRelativeToCurrentNodeAndHintDownFromParent(Int32, Int32) GetParentNodeRelativeToCurrentNodeAndHintDownFromParent(Int32, Int32) GetParentNodeRelativeToCurrentNodeAndHintDownFromParent(Int32, Int32) GetParentNodeRelativeToCurrentNodeAndHintDownFromParent(Int32, Int32)

현재 요청된 페이지의 상위 노드를 검색하고 상위 노드에 대한 하위 노드를 페치할 때 사이트 맵 공급자에 최적화된 조회 방법을 제공합니다.Provides an optimized lookup method for site map providers when retrieving an ancestor node for the currently requested page and fetching the descendant nodes for the ancestor.

(Inherited from SiteMapProvider)
GetParentNodeRelativeToNodeAndHintDownFromParent(SiteMapNode, Int32, Int32) GetParentNodeRelativeToNodeAndHintDownFromParent(SiteMapNode, Int32, Int32) GetParentNodeRelativeToNodeAndHintDownFromParent(SiteMapNode, Int32, Int32) GetParentNodeRelativeToNodeAndHintDownFromParent(SiteMapNode, Int32, Int32)

지정된 SiteMapNode 개체에 대한 상위 노드를 검색하고 해당 자식 노드를 페치할 때 사이트 맵 공급자에 최적화된 조회 방법을 제공합니다.Provides an optimized lookup method for site map providers when retrieving an ancestor node for the specified SiteMapNode object and fetching its child nodes.

(Inherited from SiteMapProvider)
GetRootNodeCore() GetRootNodeCore() GetRootNodeCore() GetRootNodeCore()

파생 클래스에 재정의되면 현재 공급자가 현재 관리하는 모든 노드의 루트 노드를 검색합니다.When overridden in a derived class, retrieves the root node of all the nodes that are currently managed by the current provider.

(Inherited from SiteMapProvider)
GetType() GetType() GetType() GetType()

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

(Inherited from Object)
HintAncestorNodes(SiteMapNode, Int32) HintAncestorNodes(SiteMapNode, Int32) HintAncestorNodes(SiteMapNode, Int32) HintAncestorNodes(SiteMapNode, Int32)

지정된 SiteMapNode 개체를 기준으로 하여 부모 및 상위 노드의 여러 수준을 최적화 상태로 검색하기 위해 사이트 맵 공급자가 재정의할 수 있는 메서드를 제공합니다.Provides a method that site map providers can override to perform an optimized retrieval of one or more levels of parent and ancestor nodes, relative to the specified SiteMapNode object.

(Inherited from SiteMapProvider)
HintNeighborhoodNodes(SiteMapNode, Int32, Int32) HintNeighborhoodNodes(SiteMapNode, Int32, Int32) HintNeighborhoodNodes(SiteMapNode, Int32, Int32) HintNeighborhoodNodes(SiteMapNode, Int32, Int32)

사이트 맵 공급자가 지정된 노드와 근접한 위치에 있는 노드에 대해 최적화된 검색을 수행하기 위해 재정의할 수 있는 메서드를 제공합니다.Provides a method that site map providers can override to perform an optimized retrieval of nodes found in the proximity of the specified node.

(Inherited from SiteMapProvider)
Initialize(String, NameValueCollection) Initialize(String, NameValueCollection) Initialize(String, NameValueCollection) Initialize(String, NameValueCollection)

영구 스토리지에서 사이트 맵 데이터를 로드하는 데 필요한 모든 리소스를 비롯하여 SiteMapProvider 구현을 초기화합니다.Initializes the SiteMapProvider implementation, including any resources that are needed to load site map data from persistent storage.

(Inherited from SiteMapProvider)
IsAccessibleToUser(HttpContext, SiteMapNode) IsAccessibleToUser(HttpContext, SiteMapNode) IsAccessibleToUser(HttpContext, SiteMapNode) IsAccessibleToUser(HttpContext, SiteMapNode)

사용자가 지정된 컨텍스트에서 지정된 SiteMapNode 개체를 볼 수 있는지 여부를 나타내는 부울 값을 검색합니다.Retrieves a Boolean value indicating whether the specified SiteMapNode object can be viewed by the user in the specified context.

(Inherited from SiteMapProvider)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(Inherited from Object)
RemoveNode(SiteMapNode) RemoveNode(SiteMapNode) RemoveNode(SiteMapNode) RemoveNode(SiteMapNode)

사이트 맵 공급자가 추적한 모든 사이트 맵 노드 컬렉션에서 지정된 SiteMapNode 개체를 제거합니다.Removes the specified SiteMapNode object from all site map node collections that are tracked by the site map provider.

ResolveSiteMapNode(HttpContext) ResolveSiteMapNode(HttpContext) ResolveSiteMapNode(HttpContext) ResolveSiteMapNode(HttpContext)

SiteMapResolve 이벤트를 발생시킵니다.Raises the SiteMapResolve event.

(Inherited from SiteMapProvider)
ToString() ToString() ToString() ToString()

현재 개체를 나타내는 문자열을 반환합니다.Returns a string that represents the current object.

(Inherited from Object)

속성

CurrentNode CurrentNode CurrentNode CurrentNode

현재 요청된 페이지를 나타내는 SiteMapNode 개체를 가져옵니다.Gets the SiteMapNode object that represents the currently requested page.

(Inherited from SiteMapProvider)
Description Description Description Description

관리 도구나 다른 UI(사용자 인터페이스)에 표시하기에 적합한 간단하고 이해하기 쉬운 설명을 가져옵니다.Gets a brief, friendly description suitable for display in administrative tools or other user interfaces (UIs).

(Inherited from ProviderBase)
EnableLocalization EnableLocalization EnableLocalization EnableLocalization

SiteMapNode 특성의 지역화된 값을 반환할지 여부를 나타내는 부울 값을 가져오거나 설정합니다.Gets or sets a Boolean value indicating whether localized values of SiteMapNode attributes are returned.

(Inherited from SiteMapProvider)
Name Name Name Name

구성 중 공급자를 참조하는 데 사용되는 이름을 가져옵니다.Gets the friendly name used to refer to the provider during configuration.

(Inherited from ProviderBase)
ParentProvider ParentProvider ParentProvider ParentProvider

현재 공급자의 부모 SiteMapProvider 개체를 가져오거나 설정합니다.Gets or sets the parent SiteMapProvider object of the current provider.

(Inherited from SiteMapProvider)
ResourceKey ResourceKey ResourceKey ResourceKey

SiteMapNode 특성을 지역화하는 데 사용되는 리소스 키를 가져오거나 설정합니다.Get or sets the resource key that is used for localizing SiteMapNode attributes.

(Inherited from SiteMapProvider)
RootNode RootNode RootNode RootNode

현재 공급자가 나타내는 사이트 맵 데이터의 루트 SiteMapNode 개체를 가져옵니다.Gets the root SiteMapNode object of the site map data that the current provider represents.

(Inherited from SiteMapProvider)
RootProvider RootProvider RootProvider RootProvider

현재 공급자 계층 구조의 루트 SiteMapProvider 개체를 가져옵니다.Gets the root SiteMapProvider object in the current provider hierarchy.

(Inherited from SiteMapProvider)
SecurityTrimmingEnabled SecurityTrimmingEnabled SecurityTrimmingEnabled SecurityTrimmingEnabled

사이트 맵 공급자가 사용자 역할을 기반으로 사이트 맵 노드를 필터링할지 여부를 나타내는 부울 값을 가져옵니다.Gets a Boolean value indicating whether a site map provider filters site map nodes based on a user's role.

(Inherited from SiteMapProvider)

이벤트

SiteMapResolve SiteMapResolve SiteMapResolve SiteMapResolve

CurrentNode 속성이 호출될 때 발생합니다.Occurs when the CurrentNode property is called.

(Inherited from SiteMapProvider)

적용 대상

추가 정보