XmlSiteMapProvider.BuildSiteMap Метод

Определение

Загружает сведения о карте веб-узла из XML-файла и создает их в памяти.Loads the site map information from an XML file and builds it in memory.

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 структуры переходов карты веб-узла.Returns the root SiteMapNode of the site map navigation structure.

Исключения

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

-или--or- Файл siteMapFile анализируется на наличие не являющегося уникальным узла <siteMapNode>.A siteMapFile is parsed for a <siteMapNode> that is not unique.

-или--or- Файл, указанный параметром siteMapFile не имеет расширения имени файла .sitemap.The file specified by the siteMapFile does not have the file name extension .sitemap.

-или--or- Файл, указанный параметром siteMapFile, не существует.The file specified by the siteMapFile does not exist.

-или--or- Поставщик, настроенный в provider узла <siteMapNode> возвращает нулевой корневой узел.A provider configured in the provider of a <siteMapNode> returns a null root node.

Файл siteMapFile указан, однако путь находится вне текущего каталога структуры для приложения.The siteMapFile is specified but the path lies outside the current directory structure for the application.

Ошибка загрузки файла конфигурации.There is an error loading the configuration file.

-или--or- Верхний элемент файла конфигурации не является элементом named <siteMap>.The top element of the configuration file is not named <siteMap>.

-или--or- Более одного верхнего узла существуют в файле конфигурации.More than one top node exists in the configuration file.

-или--or- Дочерний элемент <siteMap> имеет имя отличное от <siteMapNode>.A child of the <siteMap> has a name other than <siteMapNode>.

-или--or- узел <siteMapNode> анализируется ан наличие неожиданных атрибутов.An unexpected attribute is parsed for the <siteMapNode>.

-или--or- Вложенные элементы расположены под элементом <siteMapNode>, которым задается provider.Sub-elements are nested beneath a <siteMapNode> where the provider is set.

-или--or- Роли roles содержат узлы <siteMapNode>, которые содержат недопустимые символы.The roles of the <siteMapNode> contain characters that are not valid.

-или--or- Файл url анализируется на наличие не являющегося уникальным узла <siteMapNode>.A url is parsed for a <siteMapNode> that is not unique.

-или--or- Объект SiteMapNode обнаружен с повторяющимся значением для свойства Key.A SiteMapNode was encountered with a duplicate value for Key.

-или--or- Свойства ResourceKey или Title были указаны в объекте SiteMapNode или атрибуте custom, который определен для узла, содержащего явное выражение ресурса.The ResourceKey or Title was specified on a SiteMapNode or a custom attribute defined for the node contained an explicit resource expression.

-или--or- Явное выражение ресурса было применено к одному из свойств Title или Description или к атрибуту custom объекта SiteMapNode, однако явные сведения не были действительными.An explicit resource expression was applied either to the Title or Description or to a custom attribute of a SiteMapNode but the explicit information was not valid.

-или--or- При синтаксическом анализе свойства Url объекта SiteMapNode произошла ошибка.An error occurred while parsing the Url of a SiteMapNode.

Поставщик имени не может быть найден в текущей коллекции поставщиков карты веб-узла.A named provider cannot be found in the current site map providers collection.

узел <siteMapNode> ссылается на файл карты веб-узла, содержащий пустую строку для siteMapFile.A <siteMapNode> referencing a site map file contains an empty string for the siteMapFile.

Файл siteMapFile узла <siteMapNode> использует физический путь.A siteMapFile of a <siteMapNode> uses a physical path.

-или--or- При попытке синтаксического анализа виртуального пути к файлу, указанному в siteMapFile произошла ошибка.An error occurred while attempting to parse the virtual path to the file specified in the siteMapFile.

Примеры

В следующем примере кода показано, как создать новый экземпляр XmlSiteMapProvider класса и инициализировать его для создания схемы узла на основе XML-данных.The following code example demonstrates how to create a new instance of the XmlSiteMapProvider class and initialize it to build a site map from XML data.

<%@ 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.The preceding code example uses an XML file that is located in the virtual root of the ASP.NET application. Файл имеет следующий формат:The file has the following format:

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

Комментарии

BuildSiteMapМетод вызывается для загрузки и сборки схемы узла из постоянного хранилища.The BuildSiteMap method is called to load and build the site map from persistent storage.

Для поведения по умолчанию, когда включена фильтрация по безопасности, см. раздел "Примечания" в IsAccessibleToUser .For the default behavior when security trimming is enabled, see "Remarks" in IsAccessibleToUser.

После того как XmlSiteMapProvider объект анализирует и загружает данные карт веб-узла, все загруженные SiteMapNode объекты и SiteMapNodeCollection коллекции становятся доступными только для чтения.After the XmlSiteMapProvider object parses and loads site map data, all loaded SiteMapNode objects and SiteMapNodeCollection collections are made read-only. Когда объект XmlSiteMapProvider анализирует Url свойство из файла схемы узла, он преобразует относительные URL-адреса приложения, а также относительные URL-адреса в виртуальные пути, абсолютные для приложения.When the XmlSiteMapProvider parses the Url property from a site map file, it converts application-relative URLs, as well as relative URLs, to application-absolute virtual paths.

Объект XmlSiteMapProvider подписывается на уведомления об изменении файлов для файла. sitemap.The XmlSiteMapProvider subscribes to file change notifications for the .sitemap file. Если в файл. Sitemap внесено какое-либо изменение, то XmlSiteMapProvider перегружается и структура карты узла перестраивается.If any change is made to the .sitemap file, the XmlSiteMapProvider is reloaded, and the site map structure is rebuilt.

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

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