Partager via


Implémentation de fournisseurs sitemap ASP.NET

Mise à jour : novembre 2007

La navigation de site ASP.NET fournit plusieurs contrôles serveur Web qui affichent une structure de navigation sur une page Web : SiteMapPath, TreeView et Menu. Ces contrôles serveur Web utilisent le fournisseur sitemap par défaut ASP.NET, ou la classe XmlSiteMapProvider, pour lire les informations sitemap du fichier Web.sitemap au format XML.

Vous pouvez également implémenter votre propre fournisseur sitemap. Il existe trois raisons principales pour créer un fournisseur sitemap personnalisé :

  • pour stocker des informations sitemap dans une source de données non prise en charge par le fournisseur sitemap par défaut ASP.NET. Par exemple, vous pouvez éventuellement stocker vos données sitemap dans une base de données Visual FoxPro, Oracle ou une autre source de données ;

  • pour gérer les informations de navigation à l'aide d'un schéma différent de celui qui est utilisé pour le fichier Web.sitemap. Par exemple, vous pouvez déjà disposer d'une implémentation pour le stockage des données sitemap ;

  • pour utiliser une structure sitemap dynamique. Par exemple, vous pouvez éventuellement faire en sorte que chaque compte client puisse consulter un plan de site différent.

Note de sécurité :

L'implémentation d'un fournisseur sitemap personnalisé qui stocke des données sitemap dans un fichier dont l'extension n'est pas .sitemap représente un risque potentiel au niveau de la sécurité. Par défaut, ASP.NET est configuré pour empêcher les clients de télécharger les fichiers avec des extensions de nom de fichier connues telles que .sitemap. Pour aider à la protection de vos données, placez tous les fichiers de données sitemap personnalisés dont l'extension n'est pas .sitemap dans le dossier App_Data. Pour plus d'informations, consultez Sécurisation de la navigation de site ASP.NET.

Classes requises

Pour implémenter un fournisseur sitemap, créez une classe qui hérite de la classe abstraite SiteMapProvider de l'espace de noms System.Web, puis implémentez les membres abstraits présentés par la classe SiteMapProvider. Cette rubrique décrit les propriétés et les méthodes requises que vous devez implémenter dans les classes abstraites SiteMapProvider. Pour examiner une implémentation de chaque membre, consultez l'exemple de code fourni pour Microsoft Access et les fournisseurs sitemap en mode texte dans Comment : implémenter des fournisseurs sitemap ASP.NET.

Remarque :

La classe SiteMapProvider impose une contrainte sur la structure des données sitemap : il ne peut exister qu'un seul nœud racine. L'implémentation du fournisseur sitemap ASP.NET par défaut spécifie également que les URL doivent être uniques dans la portée du fournisseur, mais les fournisseurs sitemap personnalisés ne comportent pas cette limitation.

Membres SiteMapProvider requis

Le tableau suivant répertorie les seules méthodes requises pour implémenter un fournisseur sitemap personnalisé. La classe de base SiteMapProvider fournit une implémentation minimale.

Méthode

Description

FindSiteMapNode

Récupère une instance de la classe SiteMapNode qui représente une page. Cette méthode est surchargée.

GetChildNodes

Récupère les nœuds enfants d'une instance spécifique de la classe SiteMapNode.

GetParentNode

Récupère le nœud parent d'une instance spécifique de la classe SiteMapNode.

GetRootNodeCore

Récupère le nœud racine de tous les nœuds gérés par le fournisseur actuel. Cette méthode est appelée en interne par plusieurs classes de navigation de site pour garantir que les données de navigation ont été chargées par le fournisseur. Cette méthode ne doit pas retourner de nœud nul.

Si vous êtes satisfait de la sémantique de la classe XmlSiteMapProvider, mais que vous souhaitez utiliser un magasin de données autre que le fichier Web.sitemap, vous devez effectuer une dérivation à partir de la classe StaticSiteMapProvider plutôt que de la classe SiteMapProvider. Sinon, certaines méthodes, telles que AddNode et RemoveNode, lèveront une exception NotImplementedException à moins qu'elles ne soient implémentées. La classe StaticSiteMapProvider fournit toute la logique interne pour le stockage et la recherche de nœuds. Il vous suffit d'implémenter la méthode GetRootNodeCore et la méthode BuildSiteMap abstraite. La méthode GetRootNodeCore peut simplement appeler la méthode BuildSiteMap.

Membres personnalisés

Vous pouvez être amené à étendre les interfaces du fournisseur sitemap à d'autres fonctionnalités non fournies par les classes abstraites SiteMapProvider. Si le fournisseur personnalisé est configuré pour être le fournisseur par défaut et que la valeur de retour de Provider est attribuée au type de fournisseur personnalisé, tous les membres publics que vous ajoutez à votre fournisseur sitemap deviennent accessibles à l'aide de la propriété Provider de la classe SiteMap.

Voir aussi

Tâches

Comment : implémenter des fournisseurs sitemap ASP.NET

Concepts

Vue d'ensemble de la navigation de site ASP.NET

Suppression de la sécurité sitemap ASP.NET

Sécurisation de la navigation de site ASP.NET

Sécurisation de l'accès aux données

Autres ressources

Sécurité des applications ASP.NET dans les environnements hébergés