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. 코드 예제에 대 한 코드 예제를 사용 하 여 작동는 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.

이 예제는 네 부분:는 VirtualPathProvider 클래스 구현에서는 XML 데이터 파일을 채우는 데 사용 합니다 DataSet 개체는 AppStart 포함 된 개체는 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. 웹 서버에서 샘플 애플리케이션을 만듭니다.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. 합니다 DirectoryExistsFileExists 메서드는 요청 된 디렉터리가 가상 파일 시스템에 있는지 여부를 표시 하도록 재정의 됩니다.The DirectoryExists and FileExists methods are overridden to indicate whether a requested directory is present in the virtual file system. 합니다 GetDirectory 하 고 GetFile 메서드는 사용자 지정 반환 하도록 재정의 됩니다 VirtualDirectoryVirtualFile 가상 파일 시스템에서 정보를 포함 하는 인스턴스.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

두 번째 예제는 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_CodeApp_GlobalResources모든 App_LocalResources합니다.Directories that contain application assemblies or that generate application assemblies: Bin, App_Code, App_GlobalResources, any App_LocalResources.

  • 애플리케이션 데이터 폴더 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.

VirtualPathProvider를 등록합니다.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 디렉터리 또는 중를 Application_Start 이벤트에는 Global.asax 파일.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 클래스에서 파생 된 클래스를 사용 하 여 작동 합니다 VirtualFileVirtualDirectory 클래스입니다.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)

적용 대상