Compartilhar via


SiteMapProvider.Initialize(String, NameValueCollection) Método

Definição

Inicializa a implementação SiteMapProvider, incluindo todos os recursos necessários para carregar os dados de mapa do site do armazenamento persistente.

public:
 override void Initialize(System::String ^ name, System::Collections::Specialized::NameValueCollection ^ attributes);
public override void Initialize (string name, System.Collections.Specialized.NameValueCollection attributes);
override this.Initialize : string * System.Collections.Specialized.NameValueCollection -> unit
Public Overrides Sub Initialize (name As String, attributes As NameValueCollection)

Parâmetros

name
String

O Name do provedor a ser inicializado.

attributes
NameValueCollection

Um NameValueCollection que pode conter atributos adicionais para ajudar a inicializar o provedor. Esses atributos são lidos por meio da configuração do provedor de mapa do site no arquivo Web.config.

Exemplos

O exemplo de código a seguir demonstra como substituir o Initialize método para preparar uma conexão de banco de dados do Microsoft Access.

A cadeia de conexão do OleDbConnection objeto é passada no NameValueCollection parâmetro do Initialize método. Nesse caso, a cadeia de conexão é fornecida pela seção específica do provedor no arquivo Web.config. Aqui, accessSiteMapConnectionString contém uma cadeia de conexão para um banco de dados do Microsoft Access que hospeda os dados do mapa do site.

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

Este exemplo de código faz parte de um exemplo maior fornecido para a SiteMapProvider classe.

   // 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:
// 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;
}
' 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

Comentários

O Initialize método realmente não cria um mapa de site, ele só prepara o estado do SiteMapProvider objeto para fazer isso. A implementação padrão inicializa a SecurityTrimmingEnabled propriedade para o provedor de mapa do site da configuração de navegação do site.

Classes que derivam do SiteMapProvider método podem substituir o Initialize método para inicializar qualquer estado e recursos necessários para carregar dados do mapa do site do armazenamento persistente. Por exemplo, se sua classe derivada estiver usando arquivos para armazenar dados do mapa do site, qualquer inicialização de arquivo poderá ser executada no Initialize método. Se a classe derivada usar algum outro tipo de armazenamento de dados, como um banco de dados relacional, a inicialização de uma conexão de banco de dados poderá ser executada.

Atributos adicionais, como nomes de arquivo ou cadeias de conexão, são lidos pelo sistema de configuração ASP.NET e passados para o Initialize método com seu NameValueCollection parâmetro.

Notas aos Herdeiros

Ao substituir o Initialize(String, NameValueCollection) método em uma classe derivada, certifique-se de primeiro chamar o Initialize(String, NameValueCollection) método para a classe base antes de executar suas próprias inicializações.

Aplica-se a

Confira também