SiteMapProvider.Initialize(String, NameValueCollection) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
- 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.