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 структуры переходов карты веб-узла.
Исключения
Поставщик 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 перегружается и структура карты узла перестраивается.