SiteMapProvider.Initialize(String, NameValueCollection) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Выполняет инициализацию реализации SiteMapProvider, включающей любые ресурсы, которые необходимы для загрузки данных карты веб-узла из постоянного хранилища.
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)
Параметры
- attributes
- NameValueCollection
Объект NameValueCollection, который может содержать дополнительные атрибуты возможности инициализации поставщика. Эти атрибуты считываются из конфигурации поставщика карты веб-узла в файле Web.config.
Примеры
В следующем примере кода показано, как переопределить Initialize метод для подготовки подключения к базе данных Microsoft Access.
Строка подключения для OleDbConnection объекта передается в NameValueCollection параметре Initialize метода. В этом случае строка подключения предоставляется разделом поставщика в файле Web.config. Здесь содержит строку подключения к базе данных Microsoft Access, accessSiteMapConnectionString
в которую размещаются данные карты сайта.
<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>
Этот пример кода является частью более крупного примера, предоставленного SiteMapProvider для класса.
// 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
Комментарии
Метод Initialize фактически не создает карту сайта, она подготавливает только состояние SiteMapProvider объекта для этого. Реализация по умолчанию инициализирует SecurityTrimmingEnabled свойство поставщика карты сайта из конфигурации навигации сайта.
Классы, производные от SiteMapProvider метода, могут переопределять Initialize метод для инициализации любого состояния и ресурсов, необходимых для загрузки данных карты сайта из постоянного хранилища. Например, если производный класс использует файлы для хранения данных карты сайта, в методе можно выполнить Initialize любую инициализацию файлов. Если производный класс использует другое хранилище данных, например реляционную базу данных, может быть выполнено инициализация подключения к базе данных.
Дополнительные атрибуты, такие как имена файлов или строки подключения, считываются системой конфигурации ASP.NET и передаются методу Initialize с его NameValueCollection параметром.
Примечания для тех, кто наследует этот метод
При переопределении Initialize(String, NameValueCollection) метода в производном классе необходимо сначала вызвать Initialize(String, NameValueCollection) метод для базового класса перед выполнением собственных инициализаций.