Condividi tramite


XmlSiteMapProvider.BuildSiteMap Metodo

Definizione

Carica le informazioni della mappa del sito da un file XML e le compila in memoria.

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.

Eccezioni

La classe XmlSiteMapProvider non è stata inizializzata correttamente.

-oppure-

Viene eseguita l'analisi di siteMapFile per <siteMapNode>, che non è univoco.

-oppure-

Il file specificato da siteMapFile non ha l'estensione del nome file .sitemap.

-oppure-

Il file specificato da siteMapFile non esiste.

-oppure-

Un provider configurato all'interno di provider di <siteMapNode> restituisce un nodo radice null.

siteMapFile viene specificato, ma il percorso risiede all'esterno della struttura della directory corrente per l'applicazione.

Si è verificato un errore nel caricamento del file di configurazione.

-oppure-

Il primo elemento del file di configurazione non è named <siteMap>.

-oppure-

Esiste più di un nodo radice nel file di configurazione.

-oppure-

Un figlio di <siteMap> ha un nome diverso da <siteMapNode>.

-oppure-

Un attributo imprevisto viene analizzato per <siteMapNode>.

-oppure-

Esistono sottoelementi annidati sotto <siteMapNode>, dove è stata eseguita l'impostazione di provider.

-oppure-

In roles di <siteMapNode> sono contenuti caratteri non validi.

-oppure-

Viene eseguita l'analisi di url per <siteMapNode>, che non è univoco.

-oppure-

È stata rilevata una classe SiteMapNode con un valore duplicato per la proprietà Key.

-oppure-

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.

-oppure-

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.

-oppure-

Si è verificato un errore durante l'analisi della proprietà Url di una classe SiteMapNode.

Un provider denominato non può essere individuato nell'insieme di provider della mappa del sito corrente.

In <siteMapNode>, che fa riferimento a un file della mappa di un sito, è contenuta una stringa vuota per siteMapFile.

siteMapFile di <siteMapNode> utilizza un percorso fisico.

-oppure-

Si è verificato un errore durante un tentativo di analisi del percorso virtuale del file specificato in siteMapFile.

Esempio

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

L'esempio di codice precedente usa un file XML che si trova nella radice virtuale dell'applicazione ASP.NET. Il file ha il formato seguente:

<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 BuildSiteMap metodo viene chiamato per caricare e compilare la mappa del sito dall'archiviazione persistente.

Per il comportamento predefinito quando è abilitato il taglio della sicurezza, vedere "Osservazioni" in IsAccessibleToUser.

Dopo che l'oggetto analizza e carica i dati della XmlSiteMapProvider mappa del sito, tutti gli oggetti e SiteMapNodeCollection le raccolte caricati SiteMapNode vengono resi di sola lettura. Quando la XmlSiteMapProvider proprietà viene analizzata da un file della mappa del sito, converte Url gli URL relativi all'applicazione, nonché gli URL relativi, in percorsi virtuali assoluti dell'applicazione.

Sottoscrive XmlSiteMapProvider le notifiche di modifica dei file per il file con estensione sitemap. Se viene apportata una modifica al file con estensione sitemap, viene XmlSiteMapProvider ricaricata e la struttura della mappa del sito viene ricompilata.

Si applica a

Vedi anche