XmlSiteMapProvider.BuildSiteMap Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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.