XmlSiteMapProvider.BuildSiteMap Метод

Определение

Загружает сведения о карте веб-узла из XML-файла и создает их в памяти.

public:
 override System::Web::SiteMapNode ^ BuildSiteMap();
public override System.Web.SiteMapNode BuildSiteMap ();
override this.BuildSiteMap : unit -> System.Web.SiteMapNode
Public Overrides Function BuildSiteMap () As SiteMapNode

Возвращаемое значение

SiteMapNode

Возвращает корень SiteMapNode структуры переходов карты веб-узла.

Исключения

Поставщик XmlSiteMapProvider не был инициализирован надлежащим образом.

-или- Файл siteMapFile анализируется на наличие не являющегося уникальным узла <siteMapNode>.

-или- Файл, указанный параметром siteMapFile не имеет расширения имени файла .sitemap.

-или- Файл, указанный параметром siteMapFile, не существует.

-или- Поставщик, настроенный в provider узла <siteMapNode> возвращает нулевой корневой узел.

Файл siteMapFile указан, однако путь находится вне текущего каталога структуры для приложения.

Ошибка загрузки файла конфигурации.

-или- Верхний элемент файла конфигурации не является элементом named <siteMap>.

-или- Более одного верхнего узла существуют в файле конфигурации.

-или- Дочерний элемент <siteMap> имеет имя отличное от <siteMapNode>.

-или- узел <siteMapNode> анализируется ан наличие неожиданных атрибутов.

-или- Вложенные элементы расположены под элементом <siteMapNode>, которым задается provider.

-или- Роли roles содержат узлы <siteMapNode>, которые содержат недопустимые символы.

-или- Файл url анализируется на наличие не являющегося уникальным узла <siteMapNode>.

-или- Объект SiteMapNode обнаружен с повторяющимся значением для свойства Key.

-или- Свойства ResourceKey или Title были указаны в объекте SiteMapNode или атрибуте custom, который определен для узла, содержащего явное выражение ресурса.

-или- Явное выражение ресурса было применено к одному из свойств Title или Description или к атрибуту custom объекта SiteMapNode, однако явные сведения не были действительными.

-или- При синтаксическом анализе свойства Url объекта SiteMapNode произошла ошибка.

Поставщик имени не может быть найден в текущей коллекции поставщиков карты веб-узла.

узел <siteMapNode> ссылается на файл карты веб-узла, содержащий пустую строку для siteMapFile.

Файл siteMapFile узла <siteMapNode> использует физический путь.

-или- При попытке синтаксического анализа виртуального пути к файлу, указанному в siteMapFile произошла ошибка.

Примеры

В следующем примере кода показано, как создать новый экземпляр XmlSiteMapProvider класса и инициализировать его для создания схемы узла на основе XML-данных.

<%@ Page Language="c#" %>  
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
 <SCRIPT runat="server">  
 private void Page_Load(object sender, System.EventArgs e)  
 {  
     // Create an instance of the XmlSiteMapProvider class.  
     XmlSiteMapProvider testXmlProvider = new XmlSiteMapProvider();  
     NameValueCollection providerAttributes = new NameValueCollection(1);  
     providerAttributes.Add("siteMapFile","test.sitemap");  
     // Initialize the provider with a provider name and file name.  
     testXmlProvider.Initialize("testProvider", providerAttributes);  

     // The BuildSiteMap method is implicitly called when the   
     // RootNode property is accessed.  

     // Prints "/myvirtualdirectory/WebForm1.aspx"  
     Response.Write(testXmlProvider.RootNode.Url + "<BR>");  
     // Prints "/myvirtualdirectory/WebForm2.aspx"  
     Response.Write(testXmlProvider.CurrentNode.Url + "<BR>");  
 }  

в предыдущем примере кода используется XML-файл, расположенный в виртуальном корневом каталоге приложения ASP.NET. Файл имеет следующий формат:

<siteMap>  
     <siteMapNode title="RootNode" description="The root page." url="WebForm1.aspx">  
         <siteMapNode title="CurrentNode" description="Some sub page." url="WebForm2.aspx"/>  
     </siteMapNode>  
 </siteMap>  

Комментарии

BuildSiteMapМетод вызывается для загрузки и сборки схемы узла из постоянного хранилища.

Для поведения по умолчанию, когда включена фильтрация по безопасности, см. раздел "Примечания" в IsAccessibleToUser .

После того как XmlSiteMapProvider объект анализирует и загружает данные карт веб-узла, все загруженные SiteMapNode объекты и SiteMapNodeCollection коллекции становятся доступными только для чтения. Когда объект XmlSiteMapProvider анализирует Url свойство из файла схемы узла, он преобразует относительные URL-адреса приложения, а также относительные URL-адреса в виртуальные пути, абсолютные для приложения.

Объект XmlSiteMapProvider подписывается на уведомления об изменении файлов для файла. sitemap. Если в файл. Sitemap внесено какое-либо изменение, то XmlSiteMapProvider перегружается и структура карты узла перестраивается.

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

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