Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Actualización: noviembre 2007
La característica de navegación en el sitio de ASP.NET proporciona varios controles de servidor Web que muestran una estructura de navegación en una página Web: los controles SiteMapPath, TreeView y Menu. Estos controles de servidor Web utilizan el proveedor del mapa del sitio predeterminado de ASP.NET o la clase XmlSiteMapProvider para leer la información del mapa del sitio en el archivo Web.sitemap con formato XML.
Si lo desea, puede implementar también su propio proveedor de mapas de sitio. Existen tres razones fundamentales para crear un proveedor del mapa del sitio personalizado:
Para almacenar información del mapa del sitio en un origen de datos que no sea compatible con el proveedor del mapa del sitio predeterminado de ASP.NET. Por ejemplo, es posible que desee almacenar los datos del mapa del sitio en una base de datos de Visual FoxPro, una base de datos de Oracle u otro origen de datos.
Para administrar la información de navegación mediante un esquema que sea diferente al esquema utilizado en el archivo Web.sitemap. Por ejemplo, quizás tenga una implementación existente para almacenar los datos del mapa del sitio.
Para utilizar una estructura del mapa del sitio dinámica. Por ejemplo, quizás desee que cada cuenta de cliente pueda verse en un mapa del sitio diferente.
Nota de seguridad: |
|---|
La implementación de un proveedor de mapas de sitio personalizado que almacene los datos del mapa del sitio en un archivo con una extensión de nombre de archivo que no sea .sitemap es un riesgo de seguridad en potencia. De forma predeterminada, ASP.NET se configura para impedir que los archivos con extensiones de nombre de archivo conocidas, como .sitemap, las pueda descargar un cliente. Para ayudar a proteger sus datos, sitúe todos los archivos de datos del mapa del sitio personalizado que tengan una extensión de nombre de archivo que no sea .sitemap en la carpeta App_Data. Para obtener más información, vea Proteger la exploración del sitio de ASP.NET. |
Clases requeridas
Para implementar un proveedor de mapas de sitio, cree una clase que herede la clase abstracta SiteMapProvider del espacio de nombres System.Web y, a continuación, implemente los miembros abstractos expuestos por la clase SiteMapProvider. En este tema se describen las propiedades y los métodos necesarios que debe implementar a partir de las clases abstractas SiteMapProvider. Para revisar una implementación de cada miembro, vea el código de ejemplo proporcionado para Microsoft Access y los proveedores de mapas de sitio basados en texto de Cómo: Implementar proveedores de mapas de sitio de ASP.NET.
Nota: |
|---|
La clase SiteMapProvider impone una restricción en la estructura de los datos del mapa del sitio: sólo puede existir un nodo raíz. La implementación del proveedor del mapa del sitio predeterminado de ASP.NET también especifica que las direcciones URL deben ser únicas dentro del ámbito del proveedor, pero los proveedores de mapas de sitio personalizados no tienen esta limitación. |
Miembros de SiteMapProvider requeridos
En la tabla siguiente se muestran los únicos métodos que son necesarios para implementar un proveedor de mapas de sitio personalizado. La clase base SiteMapProvider proporciona una implementación mínima.
Método |
Descripción |
|---|---|
Recupera una instancia de la clase SiteMapNode, que representa una página. Este método está sobrecargado. |
|
Recupera los nodos secundarios de una instancia concreta de la clase SiteMapNode. |
|
Recupera los nodos principales de una instancia concreta de la clase SiteMapNode. |
|
Recupera el nodo raíz de todos los nodos administrados por el proveedor actual. Varias clases de navegación en el sitio llaman internamente a este método para garantizar que el proveedor ha cargado los datos de navegación. Este método no debe devolver un nodo null. |
Si está satisfecho con las semántica de la clase XmlSiteMapProvider pero desea utilizar un almacén de datos diferente que el del archivo Web.sitemap, debe realizar la derivación a partir de la clase StaticSiteMapProvider en lugar de la clase SiteMapProvider. De lo contrario, algunos métodos, como AddNode y RemoveNode, producirán una excepción NotImplementedException a menos que se implementen. La clase StaticSiteMapProvider proporciona toda la lógica interna para almacenar y buscar los nodos; sólo necesita implementar el método GetRootNodeCore y el método abstracto BuildSiteMap. El método GetRootNodeCore puede llamar simplemente al método BuildSiteMap.
Miembros personalizados
Quizás necesite ampliar las interfaces del proveedor de mapas de sitio con funciones adicionales que no proporcionan las clases abstractas SiteMapProvider. Si el proveedor personalizado se configura para ser el proveedor predeterminado y el valor devuelto de Provider se convierte en el tipo del proveedor personalizado, se podrá tener acceso a cualquier miembro público que se agregue al proveedor de mapas de sitio mediante la propiedad Provider de la clase SiteMap.
Vea también
Tareas
Cómo: Implementar proveedores de mapas de sitio de ASP.NET
Conceptos
Información general sobre la exploración del sitio de ASP.NET
Reducción de seguridad del mapa del sitio de ASP.NET
Proteger la exploración del sitio de ASP.NET
Otros recursos
Seguridad de aplicaciones ASP.NET en entornos alojados en host
Nota de seguridad:
Nota: