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)

Параметры

name
String

Объект Name поставщика, который следует инициализировать.

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) метод для базового класса перед выполнением собственных инициализаций.

Применяется к

См. также раздел