VirtualPathProvider Класс

Определение

Предоставляет набор методов, позволяющих веб-приложению извлекать ресурсы из виртуальной файловой системы.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
Наследование
VirtualPathProvider

Примеры

В следующем примере кода показана VirtualPathProvider реализация класса, который создает виртуальную файловую систему, используя сведения DataSet , хранящиеся в объекте.The following code example is a VirtualPathProvider class implementation that creates a virtual file system using information stored in a DataSet object. Пример кода работает с примерами кода для VirtualFile классов и VirtualDirectory , чтобы предоставить виртуальные ресурсы из хранилища данных DataSet , которое загружается в объект.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.

VirtualPathProvider Этот пример состоит из четырех частей: реализация класса, XML-файл данных, используемый для заполнения DataSet объекта, AppStart объект VirtualPathProvider , содержащий AppInitialize метод, используемый для регистрации класса с компиляцией. система и страница ASP.NET, которая предоставляет ссылки на виртуальные файлы.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.

Чтобы использовать этот пример кода в приложении, выполните следующие действия.To use this sample code in an application, follow these steps.

  1. Создайте пример приложения на веб-сервере.Create a sample application on your Web server.

  2. Скопируйте исходный код для пользовательского VirtualPathProvider объекта (см. ниже) в файл в App_Code каталоге приложения.Copy the source code for the custom VirtualPathProvider object (see below) into a file in the application's App_Code directory.

  3. Скопируйте исходный код для пользовательского VirtualDirectory объекта (см. раздел "пример" в разделе " VirtualDirectory обзор класса") в App_Code файл в каталоге приложения.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. Скопируйте исходный код для пользовательского VirtualFile объекта (см. раздел "пример" в разделе " VirtualFile обзор класса") в App_Code файл в каталоге приложения.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. Скопируйте исходный код AppStart объекта (см. ниже) в файл в App_Code каталоге приложения.Copy the source code for the AppStart object (see below) into a file in the application's App_Code directory.

  6. Скопируйте XML-данные (см. ниже) в файл с XMLData.xml именем в файл в App_Data каталоге приложения.Copy the XML data (see below) into a file named XMLData.xml into a file in the application's App_Data directory.

  7. default.aspx Скопируйте файл (см. ниже) в корневой каталог примера приложения.Copy the default.aspx file (see below) into the root directory of the sample application. Откройте default.aspx файл с помощью веб-браузера, а затем перейдите по ссылкам на странице, чтобы просмотреть содержимое виртуальных файлов.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.

Первый пример — пользовательский VirtualPathProvider класс.The first example is a custom VirtualPathProvider class. Методы DirectoryExists иFileExists переопределяются, чтобы указать, имеется ли в виртуальной файловой системе запрашиваемый каталог.The DirectoryExists and FileExists methods are overridden to indicate whether a requested directory is present in the virtual file system. Методы GetDirectory и VirtualDirectory VirtualFile переопределяются для возврата пользовательских экземпляров и, содержащих сведения из виртуальной файловой системы. GetFileThe GetDirectory and GetFile methods are overridden to return custom VirtualDirectory and VirtualFile instances containing information from the virtual file system.

Класс также предоставляет GetVirtualData метод, используемый VirtualDirectory классами DataSet и VirtualFile для доступа к объекту, содержащему данные виртуальной файловой системы.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. В производственной реализации этот метод обычно реализуется в бизнес-объекте, отвечающем за взаимодействие с хранилищем данных.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

Вторым примером является XML-файл данных, используемый для заполнения DataSet объекта, возвращаемого пользовательским VirtualPathProvider объектом.The second example is the XML data file used to populate the DataSet object returned by the custom VirtualPathProvider object. Эти XML-данные используются для демонстрации использования VirtualPathProviderобъектов, VirtualDirectoryи VirtualFile для получения данных из внешних данных и не предназначены для представления рабочего хранилища данных.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>  

В третьем примере предоставляется AppStart объект, AppInitialize содержащий метод.The third example provides an AppStart object that contains an AppInitialize method. Этот метод вызывается во время инициализации приложения ASP.NET для выполнения необходимой пользовательской инициализации.This method is called during the initialization of an ASP.NET application to perform any custom initialization required. В этом случае пользовательский VirtualPathProvider объект регистрируется в системе сборки 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

Последний пример — это ASP.NET страница, содержащая ссылки на виртуальные файлы, содержащиеся в виртуальной файловой системе.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>

Комментарии

VirtualPathProvider Класс предоставляет набор методов для реализации виртуальной файловой системы для веб-приложения.The VirtualPathProvider class provides a set of methods for implementing a virtual file system for a Web application. В виртуальной файловой системе файлы и каталоги управляются хранилищем данных, отличным от файловой системы, предоставляемой операционной системой сервера.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. Например, можно использовать виртуальную файловую систему для хранения содержимого в базе данных SQL Server.For example, you can use a virtual file system to store content in a SQL Server database.

Любой файл, обрабатываемый по запросу, можно хранить в виртуальной файловой системе.You can store any file that is processed on request in a virtual file system. В том числе следующее:This includes:

  • ASP.NET страницы, главные страницы, пользовательские элементы управления и другие объекты.ASP.NET pages, master pages, user controls, and other objects.

  • Стандартные веб-страницы с расширениями, такими как htm и JPG.Standard Web pages with extensions such as .htm and .jpg.

  • Любое пользовательское расширение, сопоставленное с BuildProvider экземпляром.Any custom extension mapped to a BuildProvider instance.

  • Любая именованная тема в App_Theme папке.Any named theme in the App_Theme folder.

Нельзя хранить папки или файлы приложения ASP.NET, которые создают сборки уровня приложения в виртуальной файловой системе.You cannot store ASP.NET application folders or files that generate application-level assemblies in a virtual file system. В том числе следующее:This includes:

  • Файл Global. asax.The Global.asax file.

  • Файлы Web. config.Web.config files.

  • Файлы данных карт сайта, XmlSiteMapProviderиспользуемые.Site map data files used by the XmlSiteMapProvider.

  • Каталоги, содержащие сборки приложений или создающие сборки приложений: Bin, App_Code, App_GlobalResources, Any App_LocalResources.Directories that contain application assemblies or that generate application assemblies: Bin, App_Code, App_GlobalResources, any App_LocalResources.

  • Папка Application Data App_Data.The application data folder, App_Data.

Примечание

Если веб-сайт предварительно компилируется для развертывания, содержимое, предоставленное VirtualPathProvider экземпляром, не компилируется и VirtualPathProvider ни один экземпляр не используется предкомпилированным сайтом.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.

Регистрация ВиртуалпаспровидерRegistering a VirtualPathProvider

Пользовательский VirtualPathProvider экземпляр должен быть зарегистрирован в системе компиляции ASP.NET с HostingEnvironment.RegisterVirtualPathProvider помощью метода до выполнения синтаксического анализа страницы или компиляции веб-приложением.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.

Как правило, VirtualPathProvider экземпляр регистрируется AppInitialize в методе, определенном App_Code в Global.asax каталоге, или во Application_Start время события в файле.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. Пример регистрации VirtualPathProvider экземпляра AppInitialize в методе см. в разделе "пример".For an example of registering a VirtualPathProvider instance in an AppInitialize method, see the Example section.

VirtualPathProvider Экземпляр можно зарегистрировать во время других событий, но страницы, скомпилированные и кэшированные VirtualPathProvider до регистрации экземпляра, не станут недействительными, даже если новый VirtualPathProvider экземпляр теперь предоставит источник для ранее скомпилированная страница.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.

Примечания для тех, кто реализует этот метод

При наследовании из VirtualPathProviderнеобходимо переопределить следующие члены:When you inherit from VirtualPathProvider, you must override the following members:

Если пользовательский VirtualPathProvider класс поддерживает каталоги в виртуальной файловой системе, необходимо переопределить следующие члены.If your custom VirtualPathProvider class supports directories in the virtual file system, you must override the following members.

  • DirectoryExists(String)

  • GetDirectory(String)


    Если ваша виртуальная файловая система будет содержать темы для веб-сайта (путем создания виртуального каталога App_Themes ), Пользовательский VirtualPathProvider класс должен поддерживать каталоги.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.

    Пользовательский VirtualPathProvider класс работает с классами, производными VirtualFile от VirtualDirectory классов и.A custom VirtualPathProvider class works with classes derived from the VirtualFile and VirtualDirectory classes. Необходимо реализовать производные классы из этих типов, чтобы предоставить сведения о файлах и каталогах из виртуальной файловой системы.You should implement derived classes from these types to provide file and directory information from your virtual file system. Пример пользовательской VirtualFile реализации см. в разделе "пример" VirtualFile раздела Обзор класса.For an example of a custom VirtualFile implementation, see the Example section of the VirtualFile class overview topic. Пример пользовательской VirtualDirectory реализации см. в разделе "пример" VirtualDirectory раздела Обзор класса.For an example of a custom VirtualDirectory implementation, see the Example section of the VirtualDirectory class overview topic.

Конструкторы

VirtualPathProvider()

Инициализирует класс для использования экземпляром унаследованного класса.Initializes the class for use by an inherited class instance. Этот конструктор может быть вызван только унаследованным классом.This constructor can be called only by an inherited class.

Свойства

Previous

Получает ссылку на ранее зарегистрированный в системе компиляции объект VirtualPathProvider.Gets a reference to a previously registered VirtualPathProvider object in the compilation system.

Методы

CombineVirtualPaths(String, String)

Объединяет базовый и относительный путь для возврата полного пути к виртуальному ресурсу.Combines a base path with a relative path to return a complete path to a virtual resource.

CreateObjRef(Type)

Создает объект, который содержит всю необходимую информацию для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Унаследовано от MarshalByRefObject)
DirectoryExists(String)

Получает значение, указывающее, существует ли каталог в виртуальной файловой системе.Gets a value that indicates whether a directory exists in the virtual file system.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Унаследовано от Object)
FileExists(String)

Получает значение, указывающее, существует ли файл в виртуальной файловой системе.Gets a value that indicates whether a file exists in the virtual file system.

GetCacheDependency(String, IEnumerable, DateTime)

Создает зависимость кэша на основе указанных виртуальных путей.Creates a cache dependency based on the specified virtual paths.

GetCacheKey(String)

Возвращает ключ кэша, используемый для указанного виртуального пути.Returns a cache key to use for the specified virtual path.

GetDirectory(String)

Получает виртуальный каталог из виртуальной файловой системы.Gets a virtual directory from the virtual file system.

GetFile(String)

Получает виртуальный файл из виртуальной файловой системы.Gets a virtual file from the virtual file system.

GetFileHash(String, IEnumerable)

Возвращает хэш указанных виртуальных путей.Returns a hash of the specified virtual paths.

GetHashCode()

Служит в качестве хэш-функции по умолчанию.Serves as the default hash function.

(Унаследовано от Object)
GetLifetimeService()

Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Унаследовано от MarshalByRefObject)
GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)
Initialize()

Инициализирует экземпляр VirtualPathProvider.Initializes the VirtualPathProvider instance.

InitializeLifetimeService()

Предоставляет объекту VirtualPathProvider неограниченное время жизни, препятствуя созданию аренды.Gives the VirtualPathProvider object an infinite lifetime by preventing a lease from being created.

MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
MemberwiseClone(Boolean)

Создает неполную копию текущего объекта MarshalByRefObject.Creates a shallow copy of the current MarshalByRefObject object.

(Унаследовано от MarshalByRefObject)
OpenFile(String)

Возвращает поток из виртуального файла.Returns a stream from a virtual file.

ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Унаследовано от Object)

Применяется к