Condividi tramite


Implementazione dei provider di mappa del sito ASP.NET

Aggiornamento: novembre 2007

Nel sistema di spostamento all'interno dei siti ASP.NET sono disponibili diversi controlli server Web che visualizzano una struttura di spostamento in una pagina Web, ovvero i controlli SiteMapPath, TreeView e Menu. Per leggere le informazioni sulla mappa del sito dal file Web.sitemap in formato XML, questi controlli utilizzano il provider predefinito di mappa del sito ASP.NET o la classe XmlSiteMapProvider.

In alternativa, è possibile implementare un provider personalizzato di mappa del sito, che può essere creato principalmente per tre motivi, ovvero:

  • Per archiviare le informazioni sulla mappa del sito in un'origine dati non supportata dal provider predefinito di mappa del sito ASP.NET, ad esempio in un database Visual FoxPro o Oracle oppure in un'altra origine dati.

  • Per gestire le informazioni sugli spostamenti tramite uno schema diverso da quello utilizzato per il file Web.sitemap. È ad esempio possibile che un'implementazione per l'archiviazione dei dati della mappa del sito sia già disponibile.

  • Per utilizzare una struttura dinamica della mappa del sito, se ad esempio si desidera che ciascun account client visualizzi una mappa del sito diversa.

Nota sulla sicurezza:

L'implementazione di un provider personalizzato di mappa del sito che archivia i dati della mappa in un file con estensione diversa da sitemap rappresenta una potenziale fonte di rischio per la protezione. Per impostazione predefinita, ASP.NET è configurato per impedire che i client eseguano il download di file con estensioni note, ad esempio sitemap. Per proteggere i dati, memorizzare i file di dati personalizzati della mappa del sito con estensione diversa da sitemap nella cartella App_Data. Per ulteriori informazioni, vedere Protezione del sistema di spostamento all'interno dei siti ASP.NET.

Classi necessarie

Per implementare un provider di mappa del sito, creare una classe che erediti la classe astratta SiteMapProvider dallo spazio dei nomi System.Web, quindi implementare i membri astratti esposti dalla classe SiteMapProvider. In questo argomento vengono descritte le proprietà e i metodi necessari che devono essere implementati dalle classi astratte SiteMapProvider. Per esaminare un'implementazione di ogni membro, vedere il codice di esempio fornito per i provider di mappa del sito basati su testo e Microsoft Access in Procedura: implementare i provider della mappa del sito ASP.NET.

Nota:

La classe SiteMapProvider impone un vincolo sulla struttura dei dati della mappa del sito, ovvero che nella struttura esista un unico nodo principale. L'implementazione del provider predefinito di mappa del sito ASP.NET specifica inoltre che gli URL all'interno dell'ambito del provider devono essere univoci. Per i provider personalizzati di mappa del sito questo limite non è valido.

Membri SiteMapProvider necessari

Nella tabella riportata di seguito vengono indicati i metodi necessari per implementare un provider personalizzato di mappa del sito. La classe base SiteMapProvider fornisce un'implementazione minima.

Metodo

Descrizione

FindSiteMapNode

Recupera un'istanza della classe SiteMapNode, che rappresenta una pagina. Si tratta di un metodo di overload.

GetChildNodes

Recupera i nodi figlio di una specifica istanza della classe SiteMapNode.

GetParentNode

Recupera il nodo genitore di una specifica istanza della classe SiteMapNode.

GetRootNodeCore

Recupera il nodo principale di tutti i nodi gestiti dal provider corrente. Questo metodo viene chiamato internamente da diverse classi di spostamento nei siti per garantire che i dati di spostamento siano stati caricati dal provider. Il metodo non deve restituire un nodo nullo.

Se si ritiene che la semantica della classe XmlSiteMapProvider sia appropriata, ma si desidera utilizzare un archivio dati diverso dal file Web.sitemap, derivare dalla classe StaticSiteMapProvider anziché dalla classe SiteMapProvider. Altrimenti, alcuni metodi, quali AddNode e RemoveNode, genereranno un'eccezione NotImplementedException, se non sono implementati. La classe StaticSiteMapProvider fornisce la logica interna generale per l'archiviazione e la ricerca dei nodi. È sufficiente implementare il metodo GetRootNodeCore e il metodo astratto BuildSiteMap. Il metodo GetRootNodeCore consente semplicemente di chiamare il metodo BuildSiteMap.

Membri personalizzati

Può essere necessario integrare le interfacce del provider di mappa del sito con funzionalità non fornite dalle classi astratte SiteMapProvider. Se il provider personalizzato è configurato come provider predefinito e il valore restituito della proprietà Provider è impostato sul tipo del provider predefinito, sarà possibile accedere a tutti i membri pubblici aggiunti al provider della mappa del sito utilizzando la proprietà Provider della classe SiteMap.

Vedere anche

Attività

Procedura: implementare i provider della mappa del sito ASP.NET

Concetti

Cenni preliminari sugli spostamenti all'interno dei siti ASP.NET

Rimozione della protezione della mappa del sito ASP.NET

Protezione del sistema di spostamento all'interno dei siti ASP.NET

Protezione dell'accesso ai dati

Altre risorse

Protezione delle applicazioni ASP.NET in ambienti host