VirtualPathProvider VirtualPathProvider VirtualPathProvider VirtualPathProvider Class

Definition

Stellt eine Reihe von Methoden bereit, mit denen eine Webanwendung Ressourcen aus einem virtuellen Dateisystem abrufen kann.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
Vererbung
VirtualPathProviderVirtualPathProviderVirtualPathProviderVirtualPathProvider

Beispiele

Das folgende Codebeispiel ist eine VirtualPathProvider Klassen Implementierung, die ein virtuelles Dateisystem mithilfe von Informationen erstellt, DataSet die in einem-Objekt gespeichert sind.The following code example is a VirtualPathProvider class implementation that creates a virtual file system using information stored in a DataSet object. Das Codebeispiel verwendet die Codebeispiele für die VirtualFile -Klasse und die- VirtualDirectory Klasse, um virtuelle Ressourcen aus einem Datenspeicher bereitzustellen DataSet , der in ein-Objekt geladen wird.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.

Dieses Beispiel besteht aus vier Teilen: VirtualPathProvider der-Klassen Implementierung, einer XML-Datendatei, die DataSet zum Auffüllen des AppStart -Objekts verwendet wird AppInitialize , einem-Objekt, VirtualPathProvider das eine Methode zum Registrieren der-Klasse mit der Kompilierung enthält. System und eine ASP.NET-Seite, die Links zu den virtuellen Dateien bereitstellt.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.

Um diesen Beispielcode in einer Anwendung zu verwenden, führen Sie die folgenden Schritte aus.To use this sample code in an application, follow these steps.

  1. Erstellen Sie auf dem Webserver eine Beispielanwendung.Create a sample application on your Web server.

  2. Kopieren Sie den Quellcode für das Benutzer VirtualPathProvider definierte Objekt (siehe unten) in eine Datei im App_Code Verzeichnis der Anwendung.Copy the source code for the custom VirtualPathProvider object (see below) into a file in the application's App_Code directory.

  3. Kopieren Sie den Quellcode für das Benutzer VirtualDirectory definierte Objekt (siehe Beispiel Abschnitt VirtualDirectory des Themas class Overview) in eine App_Code Datei im Verzeichnis der Anwendung.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. Kopieren Sie den Quellcode für das Benutzer VirtualFile definierte Objekt (siehe Beispiel Abschnitt VirtualFile des Themas class Overview) in eine App_Code Datei im Verzeichnis der Anwendung.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. Kopieren Sie den Quellcode für das AppStart - App_Code Objekt (siehe unten) in eine Datei im Verzeichnis der Anwendung.Copy the source code for the AppStart object (see below) into a file in the application's App_Code directory.

  6. Kopieren Sie die XML-Daten (siehe unten) XMLData.xml in eine Datei im App_Data Verzeichnis der Anwendung.Copy the XML data (see below) into a file named XMLData.xml into a file in the application's App_Data directory.

  7. Kopieren Sie default.aspx die Datei (siehe unten) in das Stammverzeichnis der Beispielanwendung.Copy the default.aspx file (see below) into the root directory of the sample application. Öffnen Sie die default.aspx Datei mithilfe eines Webbrowsers, und klicken Sie dann auf die Links auf der Seite, um den Inhalt der virtuellen Dateien anzuzeigen.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.

Das erste Beispiel ist eine Benutzer VirtualPathProvider definierte-Klasse.The first example is a custom VirtualPathProvider class. Die DirectoryExists - FileExists Methode und die-Methode werden überschrieben, um anzugeben, ob ein angefordertes Verzeichnis im virtuellen Dateisystem vorhanden ist.The DirectoryExists and FileExists methods are overridden to indicate whether a requested directory is present in the virtual file system. Die GetDirectory Methoden GetFile und werden überschrieben, um Benutzer VirtualDirectory definierte VirtualFile -und-Instanzen zurückzugeben, die Informationen aus dem virtuellen Dateisystem enthalten.The GetDirectory and GetFile methods are overridden to return custom VirtualDirectory and VirtualFile instances containing information from the virtual file system.

Die-Klasse bietet auch GetVirtualData eine-Methode, VirtualDirectory die VirtualFile von den Klassen und DataSet verwendet wird, um auf das Objekt zuzugreifen, das die virtuellen Dateisystem Daten enthältThe class also provides a GetVirtualData method used by the VirtualDirectory and VirtualFile classes to access the DataSet object containing the virtual file system data. In einer Produktions Implementierung wäre diese Methode in der Regel in einem Geschäftsobjekt implementiert, das für die Interaktion mit dem Datenspeicher zuständig ist.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

Das zweite Beispiel ist die XML-Datendatei, die verwendet wird DataSet , um das vom Benutzer VirtualPathProvider definierten-Objekt zurückgegebene-Objekt aufzufüllen.The second example is the XML data file used to populate the DataSet object returned by the custom VirtualPathProvider object. Diese XML-Daten werden verwendet, um die VirtualPathProviderVerwendung VirtualDirectoryder- VirtualFile ,-und-Objekte zum Abrufen von Daten aus externen Daten zu veranschaulichen. Sie sind nicht für die Darstellung eines Datenspeicher in Produktionsqualität vorgesehen.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>  

Das dritte Beispiel stellt ein AppStart -Objekt bereit, AppInitialize das eine-Methode enthält.The third example provides an AppStart object that contains an AppInitialize method. Diese Methode wird während der Initialisierung einer ASP.NET-Anwendung aufgerufen, um die erforderliche benutzerdefinierte Initialisierung auszuführen.This method is called during the initialization of an ASP.NET application to perform any custom initialization required. In diesem Fall wird das benutzerdefinierte VirtualPathProvider Objekt beim ASP.NET-Buildsystem registriert.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

Das letzte Beispiel ist eine ASP.NET Seite, die Links zu den virtuellen Dateien enthält, die im virtuellen Dateisystem enthalten sind.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>

Hinweise

Die VirtualPathProvider -Klasse stellt eine Reihe von Methoden zum Implementieren eines virtuellen Dateisystems für eine Webanwendung bereit.The VirtualPathProvider class provides a set of methods for implementing a virtual file system for a Web application. In einem virtuellen Dateisystem werden die Dateien und Verzeichnisse von einem anderen Datenspeicher als dem Dateisystem verwaltet, das vom Betriebssystem des Servers bereitgestellt wird.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. Beispielsweise können Sie ein virtuelles Dateisystem zum Speichern von Inhalten in einer SQL Server-Datenbank verwenden.For example, you can use a virtual file system to store content in a SQL Server database.

Sie können alle Dateien speichern, die auf Anforderung in einem virtuellen Dateisystem verarbeitet werden.You can store any file that is processed on request in a virtual file system. Dies umfasst Folgendes:This includes:

  • ASP.NET Seiten, Masterseiten, Benutzer Steuerelemente und andere Objekte.ASP.NET pages, master pages, user controls, and other objects.

  • Standard Webseiten mit Erweiterungen wie. htm und. jpg.Standard Web pages with extensions such as .htm and .jpg.

  • Alle benutzerdefinierten Erweiterungen, die BuildProvider einer-Instanz zugeordnet sind.Any custom extension mapped to a BuildProvider instance.

  • Jedes benannte Design im App_Theme Ordner.Any named theme in the App_Theme folder.

ASP.NET-Anwendungsordner oder-Dateien, die Assemblys auf Anwendungsebene generieren, können nicht in einem virtuellen Dateisystem gespeichert werden.You cannot store ASP.NET application folders or files that generate application-level assemblies in a virtual file system. Dies umfasst Folgendes:This includes:

  • Die Datei "Global. asax".The Global.asax file.

  • Web. config-Dateien.Web.config files.

  • Site Map-Datendateien, die XmlSiteMapProvidervon verwendet werden.Site map data files used by the XmlSiteMapProvider.

  • Verzeichnisse, die Anwendungsassemblys enthalten oder Anwendungsassemblys App_LocalResourcesgenerieren: Bin, App_Code, App_GlobalResources, Any.Directories that contain application assemblies or that generate application assemblies: Bin, App_Code, App_GlobalResources, any App_LocalResources.

  • Der Anwendungsdatenordner App_Data.The application data folder, App_Data.

Hinweis

Wenn eine Website für die Bereitstellung vorkompiliert wird, wird der von VirtualPathProvider einer-Instanz bereitgestellte Inhalt nicht VirtualPathProvider kompiliert, und von der vorkompilierten Site werden keine Instanzen verwendet.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.

Registrieren eines VirtualPathProviderRegistering a VirtualPathProvider

Eine Benutzer VirtualPathProvider definierte Instanz muss beim ASP.net-Kompilierungs System registriert werden, HostingEnvironment.RegisterVirtualPathProvider indem die-Methode verwendet wird, bevor eine Seiten Verarbeitung oder-Kompilierung von der Webanwendung ausgeführt wird.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.

In der Regel VirtualPathProvider wird eine-Instanz in AppInitialize einer Methode registriert, App_Code die im Verzeichnis definiert ist Application_Start , oder während Global.asax des Ereignisses in der Datei.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. Ein Beispiel für das Registrieren einer VirtualPathProvider -Instanz in AppInitialize einer-Methode finden Sie im Beispiel Abschnitt.For an example of registering a VirtualPathProvider instance in an AppInitialize method, see the Example section.

Sie können eine VirtualPathProvider -Instanz bei anderen Ereignissen registrieren, aber Seiten, die vor der VirtualPathProvider Registrierung der Instanz kompiliert und zwischengespeichert wurden, werden nicht für ungültig VirtualPathProvider erklärt, auch wenn die neue Instanz jetzt die Quelle für den vorher bereitstellen würde. kompilierte Seite.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.

Hinweise für Vererber

Wenn Sie von VirtualPathProvidererben, müssen Sie die folgenden Member überschreiben:When you inherit from VirtualPathProvider, you must override the following members:

Wenn Ihre Benutzer VirtualPathProvider definierte Klasse Verzeichnisse im virtuellen Dateisystem unterstützt, müssen Sie die folgenden Member überschreiben.If your custom VirtualPathProvider class supports directories in the virtual file system, you must override the following members.

  • DirectoryExists(String)

  • GetDirectory(String)


    Wenn das virtuelle Dateisystem Designs für die Website enthält (durch Erstellen eines virtuellen App_Themes -Verzeichnisses), muss die Benutzer VirtualPathProvider definierte Klasse Verzeichnisse unterstützen.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.

    Eine Benutzer VirtualPathProvider definierte Klasse funktioniert mit Klassen, die VirtualFile von VirtualDirectory den Klassen und abgeleitet werden.A custom VirtualPathProvider class works with classes derived from the VirtualFile and VirtualDirectory classes. Sie sollten abgeleitete Klassen aus diesen Typen implementieren, um Datei-und Verzeichnisinformationen aus dem virtuellen Dateisystem bereitzustellen.You should implement derived classes from these types to provide file and directory information from your virtual file system. Ein Beispiel für eine benutzerdefinierte VirtualFile Implementierung finden Sie im Beispiel Abschnitt VirtualFile des Themas class Overview.For an example of a custom VirtualFile implementation, see the Example section of the VirtualFile class overview topic. Ein Beispiel für eine benutzerdefinierte VirtualDirectory Implementierung finden Sie im Beispiel Abschnitt VirtualDirectory des Themas class Overview.For an example of a custom VirtualDirectory implementation, see the Example section of the VirtualDirectory class overview topic.

Konstruktoren

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

Initialisiert die Klasse zur Verwendung durch eine geerbte Klasseninstanz.Initializes the class for use by an inherited class instance. Dieser Konstruktor kann nur von einer geerbten Klasse aufgerufen werden.This constructor can be called only by an inherited class.

Eigenschaften

Previous Previous Previous Previous

Ruft einen Verweis auf ein vorher registriertes VirtualPathProvider-Objekt im Kompilierungssystem ab.Gets a reference to a previously registered VirtualPathProvider object in the compilation system.

Methoden

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

Kombiniert einen Basispfad mit einem relativen Pfad, um einen vollständigen Pfad zu einer virtuellen Ressource zurückzugeben.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)

Erstellt ein Objekt mit allen relevanten Informationen, die zum Generieren eines Proxys für die Kommunikation mit einem Remoteobjekt erforderlich sind.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)

Ruft einen Wert ab, der angibt, ob ein Verzeichnis im virtuellen Dateisystem vorhanden ist.Gets a value that indicates whether a directory exists in the virtual file system.

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

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.Determines whether the specified object is equal to the current object.

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

Ruft einen Wert ab, der angibt, ob eine Datei im virtuellen Dateisystem vorhanden ist.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)

Erstellt eine auf den angegebenen virtuellen Pfaden basierende Cacheabhängigkeit.Creates a cache dependency based on the specified virtual paths.

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

Gibt einen Cacheschlüssel zurück, der für den angegebenen virtuellen Pfad verwendet werden soll.Returns a cache key to use for the specified virtual path.

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

Ruft ein virtuelles Verzeichnis aus dem virtuellen Dateisystem ab.Gets a virtual directory from the virtual file system.

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

Ruft aus dem virtuellen Dateisystem eine virtuelle Datei ab.Gets a virtual file from the virtual file system.

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

Gibt einen Hash der angegebenen virtuellen Pfade zurück.Returns a hash of the specified virtual paths.

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

Fungiert als Standardhashfunktion.Serves as the default hash function.

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

Ruft das aktuelle Lebensdauerdienstobjekt ab, das die Lebensdauerrichtlinien für diese Instanz steuert.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

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

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

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

Initialisiert die VirtualPathProvider-Instanz.Initializes the VirtualPathProvider instance.

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

Führt zu einer unendlichen Lebensdauer des VirtualPathProvider-Objekts, indem das Erstellen eines Lease verhindert wird.Gives the VirtualPathProvider object an infinite lifetime by preventing a lease from being created.

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

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

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

Erstellt eine flache Kopie des aktuellen MarshalByRefObject-Objekts.Creates a shallow copy of the current MarshalByRefObject object.

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

Gibt einen Stream aus einer virtuellen Datei zurück.Returns a stream from a virtual file.

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

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Inherited from Object)

Gilt für: