VirtualPathProvider VirtualPathProvider VirtualPathProvider VirtualPathProvider Class

Definición

Proporciona un conjunto de métodos que permiten a una aplicación Web recuperar los recursos de un sistema de archivos virtual.Provides a set of methods that enable a Web application to retrieve resources from a virtual file system.

public ref class VirtualPathProvider abstract : MarshalByRefObject
public abstract class VirtualPathProvider : MarshalByRefObject
type VirtualPathProvider = class
    inherit MarshalByRefObject
Public MustInherit Class VirtualPathProvider
Inherits MarshalByRefObject
Herencia
VirtualPathProviderVirtualPathProviderVirtualPathProviderVirtualPathProvider

Ejemplos

El siguiente ejemplo de código es VirtualPathProvider una implementación de clase que crea un sistema de archivos virtual mediante la DataSet información almacenada en un objeto.The following code example is a VirtualPathProvider class implementation that creates a virtual file system using information stored in a DataSet object. En el ejemplo de código se trabaja con los ejemplos VirtualFile de VirtualDirectory código de las clases y para proporcionar recursos virtuales de un almacén de datos DataSet que se carga en un objeto.The code example works with the code examples for the VirtualFile and VirtualDirectory classes to provide virtual resources from a data store that is loaded into a DataSet object.

Este ejemplo tiene cuatro partes: la VirtualPathProvider implementación de la clase, un archivo de datos XML que DataSet se usa para AppStart rellenar el AppInitialize objeto, un objeto que VirtualPathProvider contiene un método que se usa para registrar la clase con la compilación. sistema y una página ASP.NET que proporciona vínculos a los archivos virtuales.This example has four parts: the VirtualPathProvider class implementation, an XML data file used to populate the DataSet object, an AppStart object that contains an AppInitialize method used to register the VirtualPathProvider class with the compilation system, and an ASP.NET page that provides links to the virtual files.

Para utilizar este código de ejemplo en una aplicación, siga estos pasos.To use this sample code in an application, follow these steps.

  1. Cree una aplicación de ejemplo en el servidor Web.Create a sample application on your Web server.

  2. Copie el código fuente para el objeto VirtualPathProvider personalizado (vea más abajo) en un archivo en el directorio App_Code de la aplicación.Copy the source code for the custom VirtualPathProvider object (see below) into a file in the application's App_Code directory.

  3. Copie el código fuente del objeto personalizado VirtualDirectory (vea la sección ejemplo del tema información VirtualDirectory general de la clase) en un App_Code archivo en el directorio de la aplicación.Copy the source code for the custom VirtualDirectory object (see the Example section in the VirtualDirectory class overview topic) into a file in the application's App_Code directory.

  4. Copie el código fuente del objeto personalizado VirtualFile (vea la sección ejemplo del tema información VirtualFile general de la clase) en un App_Code archivo en el directorio de la aplicación.Copy the source code for the custom VirtualFile object (see the Example section in the VirtualFile class overview topic) into a file in the application's App_Code directory.

  5. Copie el código AppStart fuente del objeto (vea más abajo) en un archivo en el directorio de App_Code la aplicación.Copy the source code for the AppStart object (see below) into a file in the application's App_Code directory.

  6. Copie los datos XML (ver a continuación) en un archivo XMLData.xml denominado en un archivo en el directorio App_Data de la aplicación.Copy the XML data (see below) into a file named XMLData.xml into a file in the application's App_Data directory.

  7. Copie el default.aspx archivo (vea más abajo) en el directorio raíz de la aplicación de ejemplo.Copy the default.aspx file (see below) into the root directory of the sample application. Use un explorador Web para abrir el default.aspx archivo y, a continuación, haga clic en los vínculos de la página para ver el contenido de los archivos virtuales.Use a Web browser to open the default.aspx file, and then click the links on the page to see the contents of the virtual files.

El primer ejemplo es una clase VirtualPathProvider personalizada.The first example is a custom VirtualPathProvider class. Los DirectoryExists métodos FileExists y se reemplazan para indicar si un directorio solicitado está presente en el sistema de archivos virtual.The DirectoryExists and FileExists methods are overridden to indicate whether a requested directory is present in the virtual file system. Los GetDirectory métodos GetFile y se reemplazan para devolver las VirtualDirectory instancias VirtualFile personalizadas y que contienen información del sistema de archivos virtual.The GetDirectory and GetFile methods are overridden to return custom VirtualDirectory and VirtualFile instances containing information from the virtual file system.

La clase también proporciona un GetVirtualData método utilizado por las VirtualDirectory clases VirtualFile y para obtener acceso DataSet al objeto que contiene los datos del sistema de archivos virtual.The class also provides a GetVirtualData method used by the VirtualDirectory and VirtualFile classes to access the DataSet object containing the virtual file system data. En una implementación de producción, este método se implementaría normalmente en un objeto comercial responsable de interactuar con el almacén de datos.In a production implementation, this method would typically be implemented in a business object responsible for interacting with the data store.

using System;
using System.Data;
using System.Security.Permissions;
using System.Web;
using System.Web.Caching;
using System.Web.Hosting;

namespace Samples.AspNet.CS
{
  [AspNetHostingPermission(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Medium)]
  [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.High)]
  public class SamplePathProvider : VirtualPathProvider
  {
    private string dataFile;

    public SamplePathProvider()
      : base()
    {
    }

    protected override void Initialize()
    {
      // Set the datafile path relative to the application's path.
      dataFile = HostingEnvironment.ApplicationPhysicalPath + "App_Data\\XMLData.xml";
    }

    /// <summary>
    ///   Data set provider for the SampleVirtualDirectory and
    ///   SampleVirtualFile classes. In a production application
    ///   this method would be on a provider class that accesses
    ///   the virtual resource data source.
    /// </summary>
    /// <returns>
    ///   The System.Data.DataSet containing the virtual resources 
    ///   provided by the SamplePathProvider.
    /// </returns>
    public DataSet GetVirtualData()
    {
      // Get the data from the cache.
      DataSet ds = (DataSet)HostingEnvironment.Cache.Get("VPPData");
      if (ds == null)
      {
        // Data not in cache. Read XML file.
        ds = new DataSet();
        ds.ReadXml(dataFile);

        // Make DataSet dependent on XML file.
        CacheDependency cd = new CacheDependency(dataFile);

        // Put DataSet into cache for maximum of 20 minutes.
        HostingEnvironment.Cache.Add("VPPData", ds, cd,
          Cache.NoAbsoluteExpiration,
          new TimeSpan(0, 20, 0),
          CacheItemPriority.Default, null);

        // Set data timestamp.
        DateTime dataTimeStamp = DateTime.Now;
        // Cache it so we can get the timestamp in later calls.
        HostingEnvironment.Cache.Insert("dataTimeStamp", dataTimeStamp, null,
          Cache.NoAbsoluteExpiration,
          new TimeSpan(0, 20, 0),
          CacheItemPriority.Default, null);
      }
      return ds;
    }

    /// <summary>
    ///   Determines whether a specified virtual path is within
    ///   the virtual file system.
    /// </summary>
    /// <param name="virtualPath">An absolute virtual path.</param>
    /// <returns>
    ///   true if the virtual path is within the 
    ///   virtual file sytem; otherwise, false.
    /// </returns>
    private bool IsPathVirtual(string virtualPath)
    {
      String checkPath = VirtualPathUtility.ToAppRelative(virtualPath);
      return checkPath.StartsWith("~/vrdir", StringComparison.InvariantCultureIgnoreCase);
    }

    public override bool FileExists(string virtualPath)
    {
      if (IsPathVirtual(virtualPath))
      {
        SampleVirtualFile file = (SampleVirtualFile)GetFile(virtualPath);
        return file.Exists;
      }
      else
        return Previous.FileExists(virtualPath);
    }

    public override bool DirectoryExists(string virtualDir)
    {
      if (IsPathVirtual(virtualDir))
      {
        SampleVirtualDirectory dir = (SampleVirtualDirectory)GetDirectory(virtualDir);
        return dir.Exists;
      }
      else
        return Previous.DirectoryExists(virtualDir);
    }

    public override VirtualFile GetFile(string virtualPath)
    {
      if (IsPathVirtual(virtualPath))
        return new SampleVirtualFile(virtualPath, this);
      else
        return Previous.GetFile(virtualPath);
    }

    public override VirtualDirectory GetDirectory(string virtualDir)
    {
      if (IsPathVirtual(virtualDir))
        return new SampleVirtualDirectory(virtualDir, this);
      else
        return Previous.GetDirectory(virtualDir);
    }

    public override CacheDependency GetCacheDependency(
      string virtualPath, 
      System.Collections.IEnumerable virtualPathDependencies, 
      DateTime utcStart)
    {
      if (IsPathVirtual(virtualPath))
      {
        System.Collections.Specialized.StringCollection fullPathDependencies = null;

        // Get the full path to all dependencies.
        foreach (string virtualDependency in virtualPathDependencies)
        {
          if (fullPathDependencies == null)
            fullPathDependencies = new System.Collections.Specialized.StringCollection();

          fullPathDependencies.Add(virtualDependency);
        }
        if (fullPathDependencies == null)
          return null;

        // Copy the list of full-path dependencies into an array.
        string[] fullPathDependenciesArray = new string[fullPathDependencies.Count];
        fullPathDependencies.CopyTo(fullPathDependenciesArray, 0);
        // Copy the virtual path into an array.
        string[] virtualPathArray = new string[1];
        virtualPathArray[0] = virtualPath;

        return new CacheDependency(virtualPathArray, fullPathDependenciesArray, utcStart);
      }
      else
        return Previous.GetCacheDependency(virtualPath, virtualPathDependencies, utcStart);
    }
  }
  
}

Imports System.Data
Imports System.Security.Permissions
Imports System.Web
Imports System.Web.Caching
Imports System.Web.Hosting


Namespace Samples.AspNet.VB
  <AspNetHostingPermission(SecurityAction.Demand, Level:=AspNetHostingPermissionLevel.Medium), _
   AspNetHostingPermission(SecurityAction.InheritanceDemand, level:=AspNetHostingPermissionLevel.High)> _
  Public Class SamplePathProvider
    Inherits VirtualPathProvider

    Private dataFile As String

    Public Sub New()
      MyBase.New()
    End Sub

    Protected Overrides Sub Initialize()
      ' Set the datafile path relative to the application's path.
      dataFile = HostingEnvironment.ApplicationPhysicalPath & _
        "App_Data\XMLData.xml"
    End Sub

    '   Data set provider for the SampleVirtualFile and
    '   SampleVirtualDirectory classes. In a production application
    '   this method would be on a provider class that accesses
    '   the virtual resource data source.
    '   The System.Data.DataSet containing the virtual resources
    '   provided by the SamplePathProvider.
    Public Function GetVirtualData() As DataSet
      ' Get the data from the cache.
      Dim ds As DataSet
      ds = CType(HostingEnvironment.Cache.Get("VPPData"), DataSet)

      If ds Is Nothing Then
        ' Data set not in cache. Read XML file.
        ds = New DataSet
        ds.ReadXml(dataFile)

        ' Make DataSet dependent on XML file.
        Dim cd As CacheDependency
        cd = New CacheDependency(dataFile)

        ' Put DataSet into cache for maximum of 20 minutes.
        HostingEnvironment.Cache.Add("VPPData", ds, cd, _
         Cache.NoAbsoluteExpiration, _
         New TimeSpan(0, 20, 0), _
         CacheItemPriority.Default, Nothing)

        ' Set data timestamp.
        Dim dataTimeStamp As DateTime
        dataTimeStamp = DateTime.Now
        ' Cache it so we can get the timestamp in later calls.
        HostingEnvironment.Cache.Add("dataTimeStamp", dataTimeStamp, Nothing, _
          Cache.NoAbsoluteExpiration, _
          New TimeSpan(0, 20, 0), _
          CacheItemPriority.Default, Nothing)
      End If
      Return ds
    End Function

    Private Function IsPathVirtual(ByVal virtualPath As String) As Boolean
      Dim checkPath As String
      checkPath = VirtualPathUtility.ToAppRelative(virtualPath)
      Return checkPath.StartsWith("~/vrdir", StringComparison.InvariantCultureIgnoreCase)
    End Function

    Public Overrides Function FileExists(ByVal virtualPath As String) As Boolean
      If (IsPathVirtual(virtualPath)) Then
        Dim file As SampleVirtualFile
        file = CType(GetFile(virtualPath), SampleVirtualFile)
        Return file.Exists
      Else
        Return Previous.FileExists(virtualPath)
      End If
    End Function

    Public Overrides Function DirectoryExists(ByVal virtualDir As String) As Boolean
      If (IsPathVirtual(virtualDir)) Then
        Dim dir As SampleVirtualDirectory
        dir = CType(GetDirectory(virtualDir), SampleVirtualDirectory)
        Return dir.exists
      Else
        Return Previous.DirectoryExists(virtualDir)
      End If
    End Function

    Public Overrides Function GetFile(ByVal virtualPath As String) As VirtualFile
      If (IsPathVirtual(virtualPath)) Then
        Return New SampleVirtualFile(virtualPath, Me)
      Else
        Return Previous.GetFile(virtualPath)
      End If
    End Function

    Public Overrides Function GetDirectory(ByVal virtualDir As String) As VirtualDirectory
      If (IsPathVirtual(virtualDir)) Then
        Return New SampleVirtualDirectory(virtualDir, Me)
      Else
        Return Previous.GetDirectory(virtualDir)
      End If
    End Function

    Public Overrides Function GetCacheDependency(ByVal virtualPath As String, ByVal virtualPathDependencies As IEnumerable, ByVal utcStart As Date) As CacheDependency
      If (IsPathVirtual(virtualPath)) Then

        Dim fullPathDependencies As System.Collections.Specialized.StringCollection
        fullPathDependencies = Nothing

        ' Get the full path to all dependencies.
        For Each virtualDependency As String In virtualPathDependencies
          If fullPathDependencies Is Nothing Then
            fullPathDependencies = New System.Collections.Specialized.StringCollection
          End If

          fullPathDependencies.Add(virtualDependency)
        Next

        If fullPathDependencies Is Nothing Then
          Return Nothing
        End If

        Dim fullPathDependenciesArray As String()
        fullPathDependencies.CopyTo(fullPathDependenciesArray, 0)

        Return New CacheDependency(fullPathDependenciesArray, utcStart)
      Else
        Return Previous.GetCacheDependency(virtualPath, virtualPathDependencies, utcStart)
      End If
    End Function
  End Class
End Namespace

El segundo ejemplo es el archivo de datos XML que se usa DataSet para rellenar el VirtualPathProvider objeto devuelto por el objeto personalizado.The second example is the XML data file used to populate the DataSet object returned by the custom VirtualPathProvider object. Estos datos XML se utilizan para mostrar el uso VirtualPathProviderde VirtualDirectorylos objetos VirtualFile , y para recuperar datos de datos externos y no pretende representar un almacén de datos de calidad de producción.This XML data is used to demonstrate using the VirtualPathProvider, VirtualDirectory, and VirtualFile objects to retrieve data from external data and is not intended to represent a production-quality data store.

<?xml version="1.0" encoding="utf-8" ?>  
  <resource type="dir"   
    path="/vrDir"   
    parentPath=""   
    content="">  
    <resource type="file"   
      path="/vrDir/Level1FileA.vrf"  
      parentPath="/vrDir"   
      content="This is the content of file Level1FileA.">  
    </resource>  
    <resource type="file"   
      path="/vrDir/Level1FileB.vrf"  
      parentPath="/vrDir"   
      content="This is the content of file Level1FileB.">  
    </resource>  
    <resource type="dir"   
      path="/vrDir/Level2DirA"   
      parentPath="/vrDir"   
      content="">  
    <resource type="file"   
      path="/vrDir/Level2DirA/Level2FileA.vrf"   
      parentPath="/vrDir/Level2DirA"   
      content="This is the content of file Level2FileA.">  
    </resource>  
    <resource type="file"   
      path="/vrDir/Level2DirA/Level2FileB.vrf"  
      parentPath="/vrDir/Level2DirA"   
      content="This is the content of file Level2FileB.">  
    </resource>  
  </resource>  
  <resource type="dir"   
    path="/vrDir/Level2DirB"   
    parentPath="/vrDir"   
    content="">  
    <resource type="file"   
      path="/vrDir/Level2DirB/Level2FileA.vrf"   
      parentPath="/vrDir/Level2DirB"   
      content="This is the content of file Level2FileA.">  
    </resource>  
    <resource type="file"   
      path="/vrDir/Level2DirB/Level2FileB.vrf"  
      parentPath="/vrDir/Level2DirB"   
      content="This is the content of file Level2FileB.">  
    </resource>  
  </resource>  
</resource>  

En el tercer ejemplo se AppStart proporciona un objeto que AppInitialize contiene un método.The third example provides an AppStart object that contains an AppInitialize method. Se llama a este método durante la inicialización de una aplicación ASP.NET para realizar cualquier inicialización personalizada necesaria.This method is called during the initialization of an ASP.NET application to perform any custom initialization required. En este caso, registra el objeto personalizado VirtualPathProvider con el sistema de compilación ASP.net.In this case, it registers the custom VirtualPathProvider object with the ASP.NET build system.

using System.Web.Hosting;

namespace Samples.AspNet.CS
{
  /// <summary>
  ///   Contains the application initialization method
  ///   for the sample application.
  /// </summary>
  public static class AppStart
  {
    public static void AppInitialize()
    {
      SamplePathProvider sampleProvider = new SamplePathProvider();
      HostingEnvironment.RegisterVirtualPathProvider(sampleProvider);
    } 
  }
}

Imports System.Web.Hosting

Namespace Samples.AspNet.VB

  Public Class AppStart

    Public Shared Sub AppInitialize()
      Dim sampleProvider As SamplePathProvider = New SamplePathProvider()
      HostingEnvironment.RegisterVirtualPathProvider(sampleProvider)
    End Sub

  End Class
End Namespace

El último ejemplo es una página ASP.NET que contiene vínculos a los archivos virtuales contenidos en el sistema de archivos virtual.The last example is an ASP.NET page that contains links to the virtual files contained in the virtual file system.


<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
  <meta http-equiv="Content-Type" content="text/html" />
  <title>Virtual Path Provider Example</title>
</head>
<body>
  <form id="form1" runat="server">
    <asp:HyperLink ID="hyperLink1" runat="server" NavigateUrl="vrDir/Level1FileA.vrf" Text="Level 1, File A" /><br />
    <asp:HyperLink ID="hyperLink2" runat="server" NavigateUrl="vrDir/Level1FileB.vrf" Text="Level 1, File B" /><br />
    <asp:HyperLink ID="hyperLink3" runat="server" NavigateUrl="vrDir/Level2DirA/Level2FileA.vrf" Text="Level 2a, File A" /><br />
    <asp:HyperLink ID="hyperLink4" runat="server" NavigateUrl="vrDir/Level2DirA/Level2FileB.vrf" Text="Level 2a, File B" /><br />
    <asp:HyperLink ID="hyperLink5" runat="server" NavigateUrl="vrDir/Level2DirB/Level2FileA.vrf" Text="Level 2b, File A" /><br />
    <asp:HyperLink ID="hyperLink6" runat="server" NavigateUrl="vrDir/Level2DirB/Level2FileB.vrf" Text="Level 2b, File B" /><br />
  </form>
</body>
</html>
<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
  <meta http-equiv="Content-Type" content="text/html" />
  <title>Virtual Path Provider Example</title>
</head>
<body>
  <form id="form1" runat="server">
    <asp:HyperLink ID="hyperLink1" runat="server" NavigateUrl="vrDir/Level1FileA.vrf" Text="Level 1, File A" /><br />
    <asp:HyperLink ID="hyperLink2" runat="server" NavigateUrl="vrDir/Level1FileB.vrf" Text="Level 1, File B" /><br />
    <asp:HyperLink ID="hyperLink3" runat="server" NavigateUrl="vrDir/Level2DirA/Level2FileA.vrf" Text="Level 2a, File A" /><br />
    <asp:HyperLink ID="hyperLink4" runat="server" NavigateUrl="vrDir/Level2DirA/Level2FileB.vrf" Text="Level 2a, File B" /><br />
    <asp:HyperLink ID="hyperLink5" runat="server" NavigateUrl="vrDir/Level2DirB/Level2FileA.vrf" Text="Level 2b, File A" /><br />
    <asp:HyperLink ID="hyperLink6" runat="server" NavigateUrl="vrDir/Level2DirB/Level2FileB.vrf" Text="Level 2b, File B" /><br />
  </form>
</body>
</html>

Comentarios

La VirtualPathProvider clase proporciona un conjunto de métodos para implementar un sistema de archivos virtual para una aplicación Web.The VirtualPathProvider class provides a set of methods for implementing a virtual file system for a Web application. En un sistema de archivos virtual, los archivos y directorios se administran mediante un almacén de datos que no es el sistema de archivos proporcionado por el sistema operativo del servidor.In a virtual file system, the files and directories are managed by a data store other than the file system provided by the server's operating system. Por ejemplo, puede usar un sistema de archivos virtual para almacenar contenido en una base de datos de SQL Server.For example, you can use a virtual file system to store content in a SQL Server database.

Puede almacenar cualquier archivo que se procese a petición en un sistema de archivos virtual.You can store any file that is processed on request in a virtual file system. Esto incluye:This includes:

  • Páginas de ASP.NET, páginas maestras, controles de usuario y otros objetos.ASP.NET pages, master pages, user controls, and other objects.

  • Páginas web estándar con extensiones como. htm y. jpg.Standard Web pages with extensions such as .htm and .jpg.

  • Cualquier extensión personalizada asignada a BuildProvider una instancia de.Any custom extension mapped to a BuildProvider instance.

  • Cualquier tema con nombre de App_Theme la carpeta.Any named theme in the App_Theme folder.

No puede almacenar carpetas o archivos de la aplicación ASP.NET que generan ensamblados de nivel de aplicación en un sistema de archivos virtual.You cannot store ASP.NET application folders or files that generate application-level assemblies in a virtual file system. Esto incluye:This includes:

  • El archivo global. asax.The Global.asax file.

  • Archivos Web. config.Web.config files.

  • Archivos de datos del mapa del XmlSiteMapProvidersitio usados por.Site map data files used by the XmlSiteMapProvider.

  • Directorios que contienen ensamblados de aplicación o que generan ensamblados App_Codede App_GlobalResourcesaplicación: App_LocalResources Bin,,, any.Directories that contain application assemblies or that generate application assemblies: Bin, App_Code, App_GlobalResources, any App_LocalResources.

  • La carpeta de datos de App_Datala aplicación,.The application data folder, App_Data.

Nota

Si un sitio web está precompilado para la implementación, el contenido VirtualPathProvider proporcionado por una instancia de no se VirtualPathProvider compila y el sitio precompilado no usa ninguna instancia de.If a Web site is precompiled for deployment, content provided by a VirtualPathProvider instance is not compiled, and no VirtualPathProvider instances are used by the precompiled site.

Registrar un VirtualPathProviderRegistering a VirtualPathProvider

Una instancia VirtualPathProvider personalizada se debe registrar con el sistema de compilación ASP.net mediante el HostingEnvironment.RegisterVirtualPathProvider método antes de que la aplicación web realice cualquier análisis o compilación de páginas.A custom VirtualPathProvider instance should be registered with the ASP.NET compilation system by using the HostingEnvironment.RegisterVirtualPathProvider method before any page parsing or compilation is performed by the Web application.

Normalmente, una VirtualPathProvider instancia de se registra en AppInitialize un método definido en App_Code el directorio o durante el Application_Start evento en el Global.asax archivo.Typically, a VirtualPathProvider instance is registered in an AppInitialize method defined in the App_Code directory, or during the Application_Start event in the Global.asax file. Para obtener un ejemplo de cómo registrar VirtualPathProvider una instancia en AppInitialize un método, vea la sección ejemplo.For an example of registering a VirtualPathProvider instance in an AppInitialize method, see the Example section.

Puede registrar una instancia VirtualPathProvider de durante otros eventos, pero las páginas compiladas y almacenadas en caché antes de que se registre la VirtualPathProvider instancia no se invalidarán, incluso si la nueva VirtualPathProvider instancia proporcionaría ahora el origen para el Página compilada.You can register a VirtualPathProvider instance during other events, but pages compiled and cached before the VirtualPathProvider instance is registered will not be invalidated, even if the new VirtualPathProvider instance would now provide the source for the previously compiled page.

Notas a los desarrolladores de herederos

Al heredar de VirtualPathProvider, es necesario invalidar los miembros siguientes:.When you inherit from VirtualPathProvider, you must override the following members:

Si la clase VirtualPathProvider personalizada admite directorios en el sistema de archivos virtual, debe invalidar los siguientes miembros.If your custom VirtualPathProvider class supports directories in the virtual file system, you must override the following members.

  • DirectoryExists(String)
  • GetDirectory(String)


    Si el sistema de archivos virtual va a contener temas para el sitio web (mediante la creación de un directorio de App_Themes VirtualPathProvider virtual), la clase personalizada debe admitir directorios.If your virtual file system will contain themes for the Web site (by creating a virtual App_Themes directory), your custom VirtualPathProvider class must support directories.

    Una clase VirtualPathProvider personalizada funciona con clases derivadas de VirtualFile las VirtualDirectory clases y.A custom VirtualPathProvider class works with classes derived from the VirtualFile and VirtualDirectory classes. Debe implementar las clases derivadas a partir de estos tipos para proporcionar información de archivos y directorios del sistema de archivos virtual.You should implement derived classes from these types to provide file and directory information from your virtual file system. Para obtener un ejemplo de una VirtualFile implementación personalizada, vea la sección ejemplo del VirtualFile tema información general de la clase.For an example of a custom VirtualFile implementation, see the Example section of the VirtualFile class overview topic. Para obtener un ejemplo de una VirtualDirectory implementación personalizada, vea la sección ejemplo del VirtualDirectory tema información general de la clase.For an example of a custom VirtualDirectory implementation, see the Example section of the VirtualDirectory class overview topic.

Constructores

VirtualPathProvider() VirtualPathProvider() VirtualPathProvider() VirtualPathProvider()

Inicializa la clase para que la use una instancia de la clase heredada.Initializes the class for use by an inherited class instance. A este constructor sólo lo puede llamar una clase heredada.This constructor can be called only by an inherited class.

Propiedades

Previous Previous Previous Previous

Obtiene una referencia a un objeto VirtualPathProvider previamente registrado del sistema de compilación.Gets a reference to a previously registered VirtualPathProvider object in the compilation system.

Métodos

CombineVirtualPaths(String, String) CombineVirtualPaths(String, String) CombineVirtualPaths(String, String) CombineVirtualPaths(String, String)

Combina una ruta de acceso base con una ruta de acceso relativa para devolver una ruta de acceso completa a un recurso virtual.Combines a base path with a relative path to return a complete path to a virtual resource.

CreateObjRef(Type) CreateObjRef(Type) CreateObjRef(Type) CreateObjRef(Type)

Crea un objeto que contiene toda la información relevante necesaria para generar un proxy utilizado para comunicarse con un objeto remoto.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Inherited from MarshalByRefObject)
DirectoryExists(String) DirectoryExists(String) DirectoryExists(String) DirectoryExists(String)

Obtiene un valor que indica si existe un directorio en el sistema de archivos virtual.Gets a value that indicates whether a directory exists in the virtual file system.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Determina si el objeto especificado es igual al objeto actual.Determines whether the specified object is equal to the current object.

(Inherited from Object)
FileExists(String) FileExists(String) FileExists(String) FileExists(String)

Obtiene un valor que indica si existe un archivo en el sistema de archivos virtual.Gets a value that indicates whether a file exists in the virtual file system.

GetCacheDependency(String, IEnumerable, DateTime) GetCacheDependency(String, IEnumerable, DateTime) GetCacheDependency(String, IEnumerable, DateTime) GetCacheDependency(String, IEnumerable, DateTime)

Crea una dependencia de caché basada en las rutas de acceso virtuales especificadas.Creates a cache dependency based on the specified virtual paths.

GetCacheKey(String) GetCacheKey(String) GetCacheKey(String) GetCacheKey(String)

Devuelve una clave de caché que se va a utilizar para la ruta de acceso virtual especificada.Returns a cache key to use for the specified virtual path.

GetDirectory(String) GetDirectory(String) GetDirectory(String) GetDirectory(String)

Recibe un directorio virtual del sistema de archivos virtual.Gets a virtual directory from the virtual file system.

GetFile(String) GetFile(String) GetFile(String) GetFile(String)

Recibe un archivo virtual del sistema de archivos virtual.Gets a virtual file from the virtual file system.

GetFileHash(String, IEnumerable) GetFileHash(String, IEnumerable) GetFileHash(String, IEnumerable) GetFileHash(String, IEnumerable)

Devuelve un código hash de las rutas de acceso virtuales especificadas.Returns a hash of the specified virtual paths.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Sirve como la función hash predeterminada.Serves as the default hash function.

(Inherited from Object)
GetLifetimeService() GetLifetimeService() GetLifetimeService() GetLifetimeService()

Recupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Inherited from MarshalByRefObject)
GetType() GetType() GetType() GetType()

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

(Inherited from Object)
Initialize() Initialize() Initialize() Initialize()

Inicializa la instancia VirtualPathProvider.Initializes the VirtualPathProvider instance.

InitializeLifetimeService() InitializeLifetimeService() InitializeLifetimeService() InitializeLifetimeService()

Concede al objeto VirtualPathProvider una duración infinita ya que impide que se genere una concesión.Gives the VirtualPathProvider object an infinite lifetime by preventing a lease from being created.

MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crea una copia superficial del objeto Object actual.Creates a shallow copy of the current Object.

(Inherited from Object)
MemberwiseClone(Boolean) MemberwiseClone(Boolean) MemberwiseClone(Boolean) MemberwiseClone(Boolean)

Crea una copia superficial del objeto MarshalByRefObject actual.Creates a shallow copy of the current MarshalByRefObject object.

(Inherited from MarshalByRefObject)
OpenFile(String) OpenFile(String) OpenFile(String) OpenFile(String)

Devuelve una secuencia de un archivo virtual.Returns a stream from a virtual file.

ToString() ToString() ToString() ToString()

Devuelve una cadena que representa el objeto actual.Returns a string that represents the current object.

(Inherited from Object)

Se aplica a