XmlSiteMapProvider.BuildSiteMap Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Ładuje informacje mapy witryny z pliku XML i tworzy je w pamięci.
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
Zwraca
Zwraca katalog główny SiteMapNode struktury nawigacji mapy witryny.
Wyjątki
Nie XmlSiteMapProvider zainicjowano prawidłowo.
-lub-
Jest siteMapFile
analizowany dla, <siteMapNode>
który nie jest unikatowy.
-lub-
Plik określony przez siteMapFile
program nie ma rozszerzenia nazwy pliku .sitemap.
-lub-
Plik określony przez siteMapFile
nie istnieje.
-lub-
Dostawca skonfigurowany w węźle provider
typu zwraca węzeł główny o wartości <siteMapNode>
null.
Wartość siteMapFile
jest określona, ale ścieżka znajduje się poza bieżącą strukturą katalogów dla aplikacji.
Wystąpił błąd podczas ładowania pliku konfiguracji.
-lub-
Najwyższym elementem pliku konfiguracji nie jest named <siteMap>
.
-lub- W pliku konfiguracji istnieje więcej niż jeden górny węzeł.
-lub-
Podrzędny z <siteMap>
ma nazwę inną niż <siteMapNode>
.
-lub-
Nieoczekiwany atrybut jest analizowany dla <siteMapNode>
.
-lub-
Podgrupy są zagnieżdżone pod <siteMapNode>
elementem , w którym provider
ustawiono element .
-lub-
Znak roles
zawiera <siteMapNode>
nieprawidłowe znaki.
-lub-
Jest url
analizowany dla, <siteMapNode>
który nie jest unikatowy.
-lub- Napotkano SiteMapNode wartość ze zduplikowaną wartością Key dla .
-lub-
Element ResourceKey lub został określony dla Title SiteMapNode atrybutu lub custom
zdefiniowanego dla węzła zawierającego jawne wyrażenie zasobu.
-lub-
Jawne wyrażenie zasobu zostało zastosowane do Title lub Description do atrybutu custom
a, ale SiteMapNode jawne informacje były nieprawidłowe.
-lub- Wystąpił błąd podczas analizowania Url wartości SiteMapNode .
Nazwanego dostawcy nie można znaleźć w bieżącej kolekcji dostawców map witryn.
Element <siteMapNode>
odwołujący się do pliku mapy witryny zawiera pusty ciąg dla siteMapFile
pliku .
A siteMapFile
w pliku używa ścieżki <siteMapNode>
fizycznej.
-lub-
Wystąpił błąd podczas próby analizy ścieżki wirtualnej do pliku określonego w pliku siteMapFile
.
Przykłady
W poniższym przykładzie kodu pokazano, jak utworzyć nowe wystąpienie klasy i zainicjować je w celu utworzenia mapy XmlSiteMapProvider witryny z danych 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>");
}
W poprzednim przykładzie kodu użyto pliku XML, który znajduje się w wirtualnym katalogu głównym ASP.NET aplikacji. Plik ma następujący format:
<siteMap>
<siteMapNode title="RootNode" description="The root page." url="WebForm1.aspx">
<siteMapNode title="CurrentNode" description="Some sub page." url="WebForm2.aspx"/>
</siteMapNode>
</siteMap>
Uwagi
Metoda BuildSiteMap jest wywoływana w celu załadowania i skompilowania mapy witryny z magazynu trwałego.
Domyślne zachowanie po włączeniu przycinania zabezpieczeń, zobacz "Uwagi" w IsAccessibleToUser .
Gdy obiekt analizuje i ładuje dane mapy witryny, wszystkie załadowane obiekty i kolekcje XmlSiteMapProvider SiteMapNode są tylko do SiteMapNodeCollection odczytu. Podczas analizowania właściwości z pliku mapy witryny konwertuje adresy URL względne dla aplikacji, a także względne adresy URL, na ścieżki wirtualne bezwzględne XmlSiteMapProvider Url aplikacji.
Obiekt XmlSiteMapProvider subskrybuje powiadomienia o zmianie pliku sitemap. W przypadku zmiany pliku .sitemap plik zostanie ponownie załadowany, a struktura XmlSiteMapProvider mapy witryny zostanie ponownie sbudowana.