Condividi tramite


SiteMapProvider.Initialize(String, NameValueCollection) Metodo

Definizione

Inizializza l'implementazione SiteMapProvider, incluse le risorse necessarie per caricare i dati della mappa del sito dall'archiviazione 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)

Parametri

name
String

Elemento Name del provider da inizializzare.

attributes
NameValueCollection

Elemento NameValueCollection in grado di contenere attributi aggiuntivi per consentire l'inizializzazione del provider. Tali attributi vengono letti dalla configurazione del provider della mappa del sito al file Web.config.

Esempio

Nell'esempio di codice seguente viene illustrato come eseguire l'override del Initialize metodo per preparare una connessione al database di Microsoft Access.

La stringa di connessione per l'oggetto OleDbConnection viene passata nel NameValueCollection parametro del Initialize metodo . In questo caso, la stringa di connessione viene fornita dalla sezione specifica del provider nel file di Web.config. Qui contiene accessSiteMapConnectionString una stringa di connessione a un database di Microsoft Access che ospita i dati della mappa del sito.

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

Questo esempio di codice fa parte di un esempio più ampio fornito per la 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

Commenti

Il Initialize metodo non crea effettivamente una mappa del sito, ma prepara solo lo stato dell'oggetto SiteMapProvider a tale scopo. L'implementazione predefinita inizializza la SecurityTrimmingEnabled proprietà per il provider della mappa del sito dalla configurazione di navigazione del sito.

Le classi che derivano da possono eseguire l'override SiteMapProvider del Initialize metodo per inizializzare qualsiasi stato e risorse necessarie per caricare i dati della mappa del sito dall'archiviazione permanente. Ad esempio, se la classe derivata usa file per archiviare i dati della mappa del Initialize sito, qualsiasi inizializzazione di file può essere eseguita nel metodo . Se la classe derivata utilizza un altro tipo di archivio dati, ad esempio un database relazionale, è possibile che venga eseguita l'inizializzazione di una connessione al database.

Gli attributi aggiuntivi, ad esempio i nomi di file o le stringhe di connessione, vengono letti dal sistema di configurazione ASP.NET e passati al metodo con il Initialize relativo NameValueCollection parametro.

Note per gli eredi

Quando si esegue l'override del Initialize(String, NameValueCollection) metodo in una classe derivata, assicurarsi di chiamare innanzitutto il Initialize(String, NameValueCollection) metodo per la classe base prima di eseguire le proprie inizializzazioni.

Si applica a

Vedi anche