SiteMapProvider.Initialize(String, NameValueCollection) Método

Definición

Inicializa la implementación de SiteMapProvider, incluyendo todos los recursos necesarios para cargar los datos del mapa del sitio desde el almacenamiento 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

Name del proveedor que se va a inicializar.

attributes
NameValueCollection

NameValueCollection que puede contener atributos adicionales para ayudar a inicializar el proveedor. Estos atributos se leen en la configuración del proveedor del mapa del sitio contenida en el archivo Web.config.

Ejemplos

En el ejemplo de código siguiente se muestra cómo invalidar el Initialize método para preparar una conexión de base de datos de Microsoft Access.

La cadena de conexión del OleDbConnection objeto se pasa en el NameValueCollection parámetro del Initialize método . En este caso, la sección específica del proveedor proporciona la cadena de conexión en el archivo Web.config. Aquí, accessSiteMapConnectionString contiene una cadena de conexión a una base de datos de Microsoft Access que hospeda los datos del mapa del sitio.

<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 ejemplo de código forma parte de un ejemplo más grande proporcionado para la SiteMapProvider clase .

   // 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

Comentarios

El Initialize método no crea realmente un mapa de sitio, solo prepara el estado del SiteMapProvider objeto para hacerlo. La implementación predeterminada inicializa la SecurityTrimmingEnabled propiedad del proveedor de mapa de sitio desde la configuración de navegación del sitio.

Las clases que derivan de SiteMapProvider pueden invalidar el Initialize método para inicializar cualquier estado y recursos necesarios para cargar los datos del mapa del sitio desde el almacenamiento persistente. Por ejemplo, si la clase derivada usa archivos para almacenar datos de mapa de sitio, cualquier inicialización de archivos se puede realizar en el Initialize método . Si la clase derivada usa algún otro tipo de almacén de datos, como una base de datos relacional, se puede realizar la inicialización de una conexión de base de datos.

El sistema de configuración de ASP.NET lee atributos adicionales, como nombres de archivo o cadenas de conexión, y se pasa al Initialize método con su NameValueCollection parámetro .

Notas a los desarrolladores de herederos

Al invalidar el Initialize(String, NameValueCollection) método en una clase derivada, asegúrese de llamar primero al Initialize(String, NameValueCollection) método para la clase base antes de realizar sus propias inicializaciones.

Se aplica a

Consulte también