SiteMapProvider.Initialize(String, NameValueCollection) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
- 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.