Export (0) Print
Expand All

VirtualFile Class

Represents a file object in a virtual file or resource space.

Namespace:  System.Web.Hosting
Assembly:  System.Web (in System.Web.dll)

public ref class VirtualFile abstract : public VirtualFileBase

The VirtualFile type exposes the following members.

  NameDescription
Protected methodVirtualFileInitializes a new instance of the VirtualFile class.
Top

  NameDescription
Public propertyIsDirectoryGets a value that indicates that this is a virtual resource that should be treated as a file. (Overrides VirtualFileBase::IsDirectory.)
Public propertyNameGets the display name of the virtual resource. (Inherited from VirtualFileBase.)
Public propertyVirtualPathGets the virtual file path. (Inherited from VirtualFileBase.)
Top

  NameDescription
Public methodCreateObjRefCreates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object. (Inherited from MarshalByRefObject.)
Public methodEquals(Object)Determines whether the specified Object is equal to the current Object. (Inherited from Object.)
Protected methodFinalizeAllows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public methodGetHashCodeServes as a hash function for a particular type. (Inherited from Object.)
Public methodGetLifetimeServiceRetrieves the current lifetime service object that controls the lifetime policy for this instance. (Inherited from MarshalByRefObject.)
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Public methodInitializeLifetimeServiceGives a VirtualFileBase instance an infinite lifetime by preventing a lease from being created. (Inherited from VirtualFileBase.)
Protected methodMemberwiseClone()Creates a shallow copy of the current Object. (Inherited from Object.)
Protected methodMemberwiseClone(Boolean)Creates a shallow copy of the current MarshalByRefObject object. (Inherited from MarshalByRefObject.)
Public methodOpenWhen overridden in a derived class, returns a read-only stream to the virtual resource.
Public methodToStringReturns a string that represents the current object. (Inherited from Object.)
Top

The VirtualFile class is the base class for objects that represent files in a virtual file system. Typically, you would implement a descendent of the VirtualFile class for each VirtualPathProvider object descendent in your Web application.

Notes to Inheritors

When you inherit from the VirtualFile class, you must override the Open method to return a read-only stream to the contents of the virtual resource.

The following code example is a VirtualFile class implementation that combines information stored in a DataSet object with a template file to return HTML data. This code example works with the code examples for the VirtualPathProvider and VirtualDirectory classes to provide virtual resources from a data store that is loaded into a DataSet object. For the complete instructions for compiling and running the example, see the Example section of the VirtualPathProvider class overview.

This example has three parts: the VirtualFile class implementation, an XML data file used to populate the DataSet object, and the page template file.

The first code example is an implementation of the VirtualFile class. Its constructor uses a method on a custom VirtualPathProvider object to return a DataSet object. It then searches the DataSet object to retrieve the information associated with the virtual file path provided. In the Open method, it combines the information from the DataSet object with a template file and returns the combination as a Stream object.

No code example is currently available or this language may not be supported.

The second example is the XML data file used to populate the DataSet object returned by the custom VirtualPathProvider object. This XML data is used to demonstrate using the VirtualPathProvider, VirtualFile, and VirtualDirectory classes 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>

The third example is the text file used as a template for the virtual file. Placeholders in the file are represented by text between percent (%) marks, such as %file% and %content%. Timestamps are used to monitor changes to cached virtual file data.

<html>
  <head>
    <title>File name: %file%</title>
  </head>

  <body>
    <h1>%file%</h1>
    <p>%content%</p>
    <p>Page timestamp: %pageTimestamp%<br>
       Data timestamp: %dataTimestamp%<br>
       Template timestamp: %templateTimestamp%</p>
  </body>
</html>

.NET Framework

Supported in: 4, 3.5, 3.0, 2.0

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Community Additions

ADD
Show:
© 2014 Microsoft