XmlSiteMapProvider.BuildSiteMap Metodo

Definizione

Carica le informazioni della mappa del sito da un file XML e le compila in memoria.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

Restituisce

Restituisce la classe SiteMapNode radice della struttura di navigazione della mappa del sito.Returns the root SiteMapNode of the site map navigation structure.

Eccezioni

La classe XmlSiteMapProvider non è stata inizializzata correttamente.The XmlSiteMapProvider was not initialized properly.

-oppure--or- Viene eseguita l'analisi di siteMapFile per <siteMapNode>, che non è univoco.A siteMapFile is parsed for a <siteMapNode> that is not unique.

-oppure--or- Il file specificato da siteMapFile non ha l'estensione del nome file .sitemap.The file specified by the siteMapFile does not have the file name extension .sitemap.

-oppure--or- Il file specificato da siteMapFile non esiste.The file specified by the siteMapFile does not exist.

-oppure--or- Un provider configurato all'interno di provider di <siteMapNode> restituisce un nodo radice null.A provider configured in the provider of a <siteMapNode> returns a null root node.

siteMapFile viene specificato, ma il percorso risiede all'esterno della struttura della directory corrente per l'applicazione.The siteMapFile is specified but the path lies outside the current directory structure for the application.

Si è verificato un errore nel caricamento del file di configurazione.There is an error loading the configuration file.

-oppure--or- Il primo elemento del file di configurazione non è named <siteMap>.The top element of the configuration file is not named <siteMap>.

-oppure--or- Esiste più di un nodo radice nel file di configurazione.More than one top node exists in the configuration file.

-oppure--or- Un figlio di <siteMap> ha un nome diverso da <siteMapNode>.A child of the <siteMap> has a name other than <siteMapNode>.

-oppure--or- Un attributo imprevisto viene analizzato per <siteMapNode>.An unexpected attribute is parsed for the <siteMapNode>.

-oppure--or- Esistono sottoelementi annidati sotto <siteMapNode>, dove è stata eseguita l'impostazione di provider.Sub-elements are nested beneath a <siteMapNode> where the provider is set.

-oppure--or- In roles di <siteMapNode> sono contenuti caratteri non validi.The roles of the <siteMapNode> contain characters that are not valid.

-oppure--or- Viene eseguita l'analisi di url per <siteMapNode>, che non è univoco.A url is parsed for a <siteMapNode> that is not unique.

-oppure--or- È stata rilevata una classe SiteMapNode con un valore duplicato per la proprietà Key.A SiteMapNode was encountered with a duplicate value for Key.

-oppure--or- La proprietà ResourceKey o la proprietà Title è stata specificata in una classe SiteMapNode oppure un attributo custom è stato definito per il nodo contenuto in un'espressione esplicita di risorsa.The ResourceKey or Title was specified on a SiteMapNode or a custom attribute defined for the node contained an explicit resource expression.

-oppure--or- Un'espressione esplicita di risorsa è stata applicata alla proprietà Title o alla proprietà Description oppure a un attributo custom di una classe SiteMapNode, ma l'informazione esplicita non è risultata valida.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.

-oppure--or- Si è verificato un errore durante l'analisi della proprietà Url di una classe SiteMapNode.An error occurred while parsing the Url of a SiteMapNode.

Un provider denominato non può essere individuato nell'insieme di provider della mappa del sito corrente.A named provider cannot be found in the current site map providers collection.

In <siteMapNode>, che fa riferimento a un file della mappa di un sito, è contenuta una stringa vuota per siteMapFile.A <siteMapNode> referencing a site map file contains an empty string for the siteMapFile.

siteMapFile di <siteMapNode> utilizza un percorso fisico.A siteMapFile of a <siteMapNode> uses a physical path.

-oppure--or- Si è verificato un errore durante un tentativo di analisi del percorso virtuale del file specificato in siteMapFile.An error occurred while attempting to parse the virtual path to the file specified in the siteMapFile.

Esempio

Nell'esempio di codice riportato di seguito viene illustrato come creare una nuova istanza della classe XmlSiteMapProvider e inizializzarla per compilare una mappa del sito da dati 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>");  
 }  

Nell'esempio di codice precedente viene usato un file XML che si trova nella radice virtuale dell'applicazione ASP.NET.The preceding code example uses an XML file that is located in the virtual root of the ASP.NET application. Il file ha il formato seguente: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>  

Commenti

Il metodo BuildSiteMap viene chiamato per caricare e compilare la mappa del sito dall'archivio permanente.The BuildSiteMap method is called to load and build the site map from persistent storage.

Per il comportamento predefinito quando è abilitata la rimozione di sicurezza, vedere la sezione "osservazioni" in IsAccessibleToUser.For the default behavior when security trimming is enabled, see "Remarks" in IsAccessibleToUser.

Dopo che l'oggetto XmlSiteMapProvider analizza e carica i dati della mappa del sito, tutti gli oggetti SiteMapNode caricati e le raccolte di SiteMapNodeCollection vengono resi di sola lettura.After the XmlSiteMapProvider object parses and loads site map data, all loaded SiteMapNode objects and SiteMapNodeCollection collections are made read-only. Quando il XmlSiteMapProvider analizza la proprietà Url da un file della mappa del sito, converte gli URL relativi all'applicazione, nonché gli URL relativi, in percorsi virtuali dell'applicazione assoluti.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.

Il XmlSiteMapProvider sottoscrive le notifiche di modifica dei file per il file con estensione Sitemap.The XmlSiteMapProvider subscribes to file change notifications for the .sitemap file. Se viene apportata una modifica al file con estensione Sitemap, il XmlSiteMapProvider viene ricaricato e la struttura della mappa del sito viene ricompilata.If any change is made to the .sitemap file, the XmlSiteMapProvider is reloaded, and the site map structure is rebuilt.

Si applica a

Vedi anche