SiteMapProvider.Initialize(String, NameValueCollection) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Inicializa a SiteMapProvider implementação, incluindo quaisquer recursos necessários para carregar dados do mapa do local a partir 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
- attributes
- NameValueCollection
A que pode conter atributos adicionais para ajudar a NameValueCollection inicializar o fornecedor. Estes atributos são lidos a partir da configuração do fornecedor de mapas do sítio no ficheiro Web.config.
Exemplos
O exemplo de código seguinte demonstra como sobrescrever o método Initialize para preparar uma ligação Microsoft Access à base de dados.
A cadeia de ligação para o objeto OleDbConnection é passada no parâmetro NameValueCollection do método Initialize. Neste caso, o cadeia de ligação é fornecido pela secção específica do fornecedor no ficheiro Web.config. Aqui, accessSiteMapConnectionString contém um cadeia de ligação para uma base de dados Microsoft Access que aloja os dados do mapa do local.
<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
Observações
O Initialize método não constrói realmente um mapa do sítio, apenas prepara o estado do SiteMapProvider objeto para o fazer. A implementação padrão inicializa a SecurityTrimmingEnabled propriedade para o fornecedor do mapa do local a partir da configuração de navegação do local.
As classes que derivam do SiteMapProvider podem sobrepor o Initialize método para inicializar qualquer estado e recursos necessários para carregar dados do mapa do site a partir do armazenamento persistente. Por exemplo, se a sua classe derivada estiver a usar ficheiros para armazenar dados do mapa do site, qualquer inicialização de ficheiro pode ser realizada no Initialize método. Se a classe derivada usar algum outro tipo de armazenamento de dados, como uma base de dados relacional, pode ser realizada a inicialização de uma ligação à base de dados.
Atributos adicionais, como nomes de ficheiros ou cadeias de ligação, são lidos pelo sistema de configuração ASP.NET e passados para o método Initialize com o seu parâmetro NameValueCollection.
Notas para Herdeiros
Ao substituir o Initialize(String, NameValueCollection) método numa classe derivada, certifique-se primeiro de chamar o Initialize(String, NameValueCollection) método para a classe base antes de realizar as suas próprias inicializações.