VirtualPathProvider VirtualPathProvider VirtualPathProvider VirtualPathProvider Class

定義

Web アプリケーションによって仮想ファイル システムのリソースを取得できるようにする一連のメソッドが用意されています。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
継承
VirtualPathProviderVirtualPathProviderVirtualPathProviderVirtualPathProvider

次のコード例は、 VirtualPathProvider DataSetオブジェクトに格納されている情報を使用して仮想ファイルシステムを作成するクラスの実装です。The following code example is a VirtualPathProvider class implementation that creates a virtual file system using information stored in a DataSet object. このコード例では、クラスVirtualFileVirtualDirectoryクラスのコード例を使用して、 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.

この例には4つのVirtualPathProvider部分があります。クラスの実装、オブジェクトのDataSet設定に使用AppStartされる XML データAppInitializeファイル、 VirtualPathProviderクラスをコンパイルに登録するために使用されるメソッドを含むオブジェクトです。システムと、仮想ファイルへのリンクを提供する 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. Web サーバーでサンプルアプリケーションを作成します。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. Web ブラウザーを使用して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. メソッドGetDirectoryGetFileメソッドは、仮想ファイルシステムVirtualDirectoryからVirtualFileの情報を格納しているカスタムおよびインスタンスを返すようにオーバーライドされます。The GetDirectory and GetFile methods are overridden to return custom VirtualDirectory and VirtualFile instances containing information from the virtual file system.

クラスは、仮想ファイルGetVirtualDataシステムデータを格納VirtualDirectoryVirtualFileているDataSetオブジェクトにアクセスするために、クラスおよびクラスによって使用されるメソッドも提供します。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

2番目の例は、カスタムDataSet VirtualPathProviderオブジェクトによって返されるオブジェクトを設定するために使用される XML データファイルです。The second example is the XML data file used to populate the DataSet object returned by the custom VirtualPathProvider object. この XML データは、、、およびVirtualPathProvider VirtualFileの各VirtualDirectoryオブジェクトを使用して外部データからデータを取得する方法を示すために使用されます。これは、実稼働品質のデータストアを表すためのものではありません。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>  

3番目の例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には、Web アプリケーションの仮想ファイルシステムを実装するための一連のメソッドが用意されています。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 などの拡張子を持つ標準の Web ページ。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_LocalResources、またはアプリケーションアセンブリを生成するディレクトリ:、、 、any。App_GlobalResourcesDirectories that contain application assemblies or that generate application assemblies: Bin, App_Code, App_GlobalResources, any App_LocalResources.

  • アプリケーションデータフォルダー App_DataThe application data folder, App_Data.

注意

Web サイトが配置のためにプリコンパイルされている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.

VirtualPathProvider の登録Registering a VirtualPathProvider

Web アプリケーションVirtualPathProviderによってページの解析やコンパイルが実行されるHostingEnvironment.RegisterVirtualPathProvider前に、メソッドを使用して、カスタムインスタンスを ASP.NET コンパイルシステムに登録する必要があります。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 、インスタンスは、 Application_Start AppInitialize ディレクトリでApp_Code定義されているメソッド、またはファイル内のイベント中に登録されます。Global.asaxTypically, 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登録する例については、「例」のセクションを参照してください。 AppInitializeFor 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ディレクトリを作成して) Web サイトのテーマが含まれている場合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() VirtualPathProvider() VirtualPathProvider() VirtualPathProvider()

継承クラス インスタンスによって使用されるクラスを初期化します。Initializes the class for use by an inherited class instance. このコンストラクターは、継承クラスによってのみ呼び出すことができます。This constructor can be called only by an inherited class.

プロパティ

Previous Previous Previous Previous

コンパイル システム内の以前に登録済みの VirtualPathProvider オブジェクトへの参照を取得します。Gets a reference to a previously registered VirtualPathProvider object in the compilation system.

メソッド

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

ベース パスと相対パスを結合して、仮想リソースへの絶対パスを返します。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)

リモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。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)

仮想ファイル システムにディレクトリが存在するかどうかを示す値を取得します。Gets a value that indicates whether a directory exists in the virtual file system.

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

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

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

仮想ファイル システムにファイルが存在するかどうかを示す値を取得します。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)

指定した仮想パスに基づいてキャッシュの依存関係を作成します。Creates a cache dependency based on the specified virtual paths.

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

指定した仮想パスで使用されるキャッシュ キーを返します。Returns a cache key to use for the specified virtual path.

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

仮想ファイル システムから仮想ディレクトリを取得します。Gets a virtual directory from the virtual file system.

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

仮想ファイル システムから仮想ファイルを取得します。Gets a virtual file from the virtual file system.

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

指定した仮想パスのハッシュを返します。Returns a hash of the specified virtual paths.

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

既定のハッシュ関数として機能します。Serves as the default hash function.

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

対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。Retrieves the current lifetime service object that controls the lifetime policy for this instance.

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

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

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

VirtualPathProvider インスタンスを初期化します。Initializes the VirtualPathProvider instance.

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

リースが作成されないようにすることで、VirtualPathProvider オブジェクトに無期限の有効期間を指定します。Gives the VirtualPathProvider object an infinite lifetime by preventing a lease from being created.

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

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

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

現在の MarshalByRefObject オブジェクトの簡易コピーを作成します。Creates a shallow copy of the current MarshalByRefObject object.

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

仮想ファイルからストリームを返します。Returns a stream from a virtual file.

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

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(Inherited from Object)

適用対象