Freigeben über


Implementieren von ASP.NET-Siteübersichtsanbietern

Aktualisiert: November 2007

Die ASP.NET-Sitenavigation enthält mehrere Webserversteuerelemente, die die Navigationsstruktur einer Webseite anzeigen: Die Steuerelemente SiteMapPath, TreeView und Menu. Diese Webserversteuerelemente verwenden den standardmäßigen ASP.NET-Siteübersichtsanbieter oder die XmlSiteMapProvider-Klasse, um aus der XML-formatierten Datei Web.sitemap Informationen über die Siteübersicht zu lesen.

Alternativ können Sie einen eigenen Siteübersichtsanbieter implementieren. Drei Hauptgründe für die Erstellung eines benutzerdefinierten Siteübersichtsanbieters:

  • Für die Speicherung von Siteübersichtsinformationen in einer Datenquelle, die nicht vom standardmäßigen Siteübersichtsanbieter von ASP.NET unterstützt wird. Dabei könnte es sich zum Beispiel um eine Visual FoxPro-Datenbank, eine Oracle-Datenbank oder eine andere Datenquelle handeln.

  • Für die Verwaltung von Übersichtsinformationen nach einem anderen Schema als dem in der Datei Web.sitemap vorgegebenen. Zum Beispiel könnten Sie bereits eine vorhandene Implementierung dafür besitzen, Siteübersichtsdaten zu speichern.

  • Um eine dynamische Siteübersichtsstruktur zu verwenden. Zum Beispiel könnten Sie für jeden Client die Möglichkeit zur Anzeige einer unterschiedlichen Siteübersicht haben möchten.

Sicherheitshinweis:

Ein Sicherheitsrisiko entsteht durch die Verwendung eines benutzerdefinierten Seitenübersichtsanbieters, welcher die Seitenübersichtsdateien in einer Datei ohne die Dateinamenerweiterung .sitemap speichert. ASP.NET ist standardmäßig für den Schutz von Dateien mit bestimmter Dateinamenerweiterung – wie zum Beispiel .sitemap – konfiguriert. Solche Dateien können von Clients nicht heruntergeladen werden. Legen Sie Siteübersichtsdateien mit anderen Dateinamenerweiterungen als .sitemap im Ordner App_Data ab, um diese Daten zu schützen. Weitere Informationen finden Sie unter Sichern der ASP.NET-Sitenavigation.

Erforderliche Klassen

Um einen Siteübersichtanbieter zu implementieren, erstellen Sie eine Klasse, welche die SiteMapProvider-abstrakte Klasse vom System.Web-Namespace erbt. Implementieren Sie anschließend die öffentlichen abstrakten Member der SiteMapProvider-Klasse. Dieses Thema beschreibt die erforderlichen Eigenschaften und Methoden, welche von der SiteMapProvider-abstrakten Klasse implementiert werden müssen. Um die Implementierung eines jeden Members noch einmal einzusehen, lesen Sie die Codebeispiele für die Microsoft Access- und textbasierten Siteübersichtanbieter in Gewusst wie: Implementieren von ASP.NET-Siteübersichtsanbietern.

Hinweis:

Die SiteMapProvider-Klasse übt eine Einschränkung auf die Struktur der Siteübersichtsdaten aus: Es kann nur ein Stammknoten existieren. Der standardmäßige Siteübersichtanbieter von ASP.NET beschränkt zusätzlich dazu URLs auf Einmaligkeit im entsprechenden Bereich des Anbieters. Benutzerdefinierte Siteübersichtprovider haben diese Einschränkung nicht.

Erforderliche SiteMapProvider-Member

Folgende Tabelle enthält auschließlich Methoden, die für einen benutzerdefinierten Siteübersichtanbieter implementiert werden müssen. Die SiteMapProvider-Basisklasse stellt eine minimale Implementierung bereit.

Methode

Beschreibung

FindSiteMapNode

Ruft eine Instanz der SiteMapNode-Klasse ab, die eine Seite darstellt. Diese Methode wird überladen.

GetChildNodes

Ruft die untergeordneten Knoten einer bestimmten Instanz der SiteMapNode-Klasse ab.

GetParentNode

Ruft die übergeordneten Knoten einer bestimmten Instanz der SiteMapNode-Klasse ab.

GetRootNodeCore

Ruft den Stammknoten aller Knoten ab, die vom aktuellen Anbieter verwaltet werden. Diese Methode wird intern von verschiedenen Sitenavigationsklassen aufgerufen, um jeweils sicherzustellen, dass die Navigationsdaten vom Anbieter geladen wurden. Diese Methode darf keinen NULL-Knoten zurückgeben.

Wenn Sie mit der Semantik der XmlSiteMapProvider-Klasse zufrieden sind, jedoch einen anderen Datenspeicher als die Datei Web.sitemap verwenden möchten, sollten Sie von der StaticSiteMapProvider-Klasse statt derSiteMapProvider-Klasse ableiten. Andernfalls werden einige Methoden wie zum Beispiel AddNode und RemoveNode eine NotImplementedException auslösen, sofern sie nicht implementiert wurden. Die StaticSiteMapProvider-Klasse stellt jedwede interne Logik für die Durchsuchung und die Speicherung von Knoten zur Verfügung. Lediglich die GetRootNodeCore-Methode und die abstrakte BuildSiteMap-Methode müssen implementiert werden. Die GetRootNodeCore-Methode kann leicht die BuildSiteMap-Methode aufrufen.

Benutzerdefinierte Member

Sie können die Siteübersichtanbieter mit zusätzlichen Schnittstellen und Funktionen erweitern, welche nicht von den SiteMapProvider-abstrakten Klassen zur Verfügung gestellt werden. Wenn der benutzerdefinierte Anbieter als standardmäßiger Anbieter eingestellt ist und der Rückgabewert von Provider auf den Typ des benutzerdefinierten Anbieters umgewandelt wird, kann auf alle Member, die Sie Ihrem Siteübersichtanbieter hinzufügen, mit der Provider-Eigenschaft der SiteMap-Klasse zugegriffen werden.

Siehe auch

Aufgaben

Gewusst wie: Implementieren von ASP.NET-Siteübersichtsanbietern

Konzepte

Übersicht über die ASP.NET-Sitenavigation

Einschränken der ASP.NET-Siteübersicht aus Sicherheitsgründen

Sichern der ASP.NET-Sitenavigation

Sichern des Datenzugriffs

Weitere Ressourcen

ASP.NET-Anwendungssicherheit in Hostumgebungen