Αναγν. άρθρου: 910441 - Τελευταία αναθεώρηση: Παρασκευή, 24 Δεκεμβρίου 2010 - Αναθεώρηση: 2.0

Τρόπος χρήσης υπηρεσιών παροχής εικονικής διαδρομής για δυναμική φόρτωση και μεταγλωττίστε το περιεχόμενο από τις εικονικές διαδρομές στο ASP.NET 2.0

Συμβουλή συστήματοςΑυτό το άρθρο ισχύει για διαφορετικό λειτουργικό σύστημα από αυτό που χρησιμοποιείτε. Το περιεχόμενο του άρθρου που ενδέχεται να μην σας αφορά έχει απενεργοποιηθεί.
Υποστήριξη ASP.NET ομιλία στήλη

Τρόπος χρήσης υπηρεσιών παροχής εικονικής διαδρομής για δυναμική φόρτωση και μεταγλωττίστε το περιεχόμενο από τις εικονικές διαδρομές στο ASP.NET 2.0

Για να προσαρμόσετε αυτήν τη στήλη για τις ανάγκες σας, θέλετε να προσκαλέσετε να υποβάλλετε τις ιδέες σας σχετικά με θέματα που σας ενδιαφέρουν, μπορείτε και θέματα για τα οποία θέλετε να δείτε απευθύνεται σε μελλοντικές άρθρα της Γνωσιακής βάσης και οι στήλες υποστήριξης της φωνής. Μπορείτε να υποβάλετε σας ιδέες και τα σχόλιά σας χρησιμοποιώντας τοΕρώτηση για την (http://support.microsoft.com/common/survey.aspx?scid=sw;en;1176&p0=&p1=&p2=&p3=&p4=) MAPI. Υπάρχει επίσης μια σύνδεση για τη φόρμα στο κάτω μέρος αυτής της στήλης.

Σε αυτήν τη σελίδα

Ανάπτυξη όλων | Σύμπτυξη όλων

ΕΙΣΑΓΩΓΗ

Γεια και Καλώς ορίσατε πάλι! Το όνομά μου είναι Parag Agarwal, ένας μηχανικός υποστήριξης στη Microsoft. Αυτό το μήνα μας πρόκειται να συζητήσετε σχετικά με τις υπηρεσίες παροχής εικονικής διαδρομής στο Microsoft ASP.NET 2.0.

ΕΠΙΣΚΟΠΗΣΗ

Αυτό το μήνα, εμείς θα παρουσιάζουν τον τρόπο επεκτείνετε ASP.NET, παρέχοντας εικονική πρόσβαση σε περιεχόμενο και αρχεία για μεταγλώττιση στο ASP.NET 2.0. Αυτή η δυνατότητα μπορεί να χρησιμοποιηθεί για τη δημιουργία εφαρμογών παρόμοια με το Microsoft SharePoint Portal Server, όπου είναι αποθηκευμένο το περιεχόμενο σε μια βάση δεδομένων αντί για το φυσικό αρχείο συστήματος. Σε αυτό το άρθρο σας θα δημιουργήσει ένα δείγμα, όπου είναι αποθηκευμένο το περιεχόμενο της σελίδας φόρμας Web που ζητήθηκε σε μια βάση δεδομένων Microsoft SQL Server.

Η υπηρεσία παροχής εικονικής διαδρομής

Η υπηρεσία παροχής εικονικής διαδρομής παρέχει ένα μηχανισμό με τον οποίο μας να επεκτείνετε το ASP.NET για να εξυπηρετήσουν εικονικού περιεχόμενο στο σύστημα μεταγλώττισης. Για παράδειγμα, μια υπηρεσία παροχής εικονικής διαδρομής παρέχει ένα μέσο για την παροχή περιεχομένου από τοποθεσίες εκτός από το σύστημα αρχείων. Οι προγραμματιστές που θέλουν να παρέχουν περιεχόμενο εικονικής πρέπει να εκτελέσετε τις παρακάτω εργασίες:
  • Δημιουργήστε ένα φάκελοVirtualPathProviderκλάσης και υλοποιεί όλες τις μεθόδους που απαιτούνται για τη Διαχείριση αρχείων και φακέλων αιτήσεων.
  • Καταχώρηση στην υπηρεσία παροχής εικονικής διαδρομής για να επιτρέψετε στο ASP.NET περιβάλλον φιλοξενίας γνωρίζετε πού εξυπηρετείται στο περιεχόμενο από.
  • CreateVirtualFileANDVirtualDirectoryαντικείμενα για τη ροή του περιεχομένου.
Για περισσότερες πληροφορίες σχετικά με τοVirtualPathProviderκλάση, επισκεφθείτε την ακόλουθη τοποθεσία της Microsoft Developer Network (MSDN) στο Web:
http://msdn2.Microsoft.com/en-us/library/System.Web.hosting.virtualpathprovider.aspx (http://msdn2.microsoft.com/en-us/library/system.web.hosting.virtualpathprovider.aspx)

Το περιεχόμενο μπορεί να virtualized;

Οι τύποι browseable, όπως ASPX, οι κύριες σελίδες, ASCX και θέματα, είναι μόνο τα στοιχεία που μπορούν να είναι virtualized.

Προετοιμάζεται η εφαρμογή όταν πραγματοποιούνται κλήσεις για τοAppInitializeστατική μέθοδο και συμβάντα που έχουν οριστεί στο εσωτερικό τουGlobal.asaxFILE. Αυτές οι κλήσεις μεθόδων είναι μόνο δύο σημεία όπου τοVirtualPathProviderη κλάση μπορεί να καταχωρηθεί.

Τη μεταγλώττιση του στοιχεία ανώτερου επιπέδου, όπως τους φακέλους "App_Code" και "App_Data", δεν είναι δυνατό να επηρεαστούν σε οποιοδήποτε σημείο του κύκλου ζωής της εφαρμογής για την υπηρεσία παροχής που θέλετε να καταχωρήσετε.

Για να virtualize browsable περιεχόμενο από την προεπιλεγμένη, πρέπει να αντιστοιχίσετε έναΤο BuildProviderCLASS. Για περισσότερες πληροφορίες σχετικά με τοΤο BuildProviderη κλάση και τον τρόπο που χρησιμοποιεί το ASP.NET περιβάλλον δόμησης τουΤο BuildProviderη κλάση για την δημιουργία κώδικα προέλευσης για διαφορετικούς τύπους αρχείων, επισκεφθείτε την ακόλουθη τοποθεσία MSDN στο Web:
http://msdn2.Microsoft.com/en-us/library/System.Web.compilation.BuildProvider.aspx (http://msdn2.microsoft.com/en-us/library/system.web.compilation.buildprovider.aspx)

Μοντέλο μεταγλώττισης

Πριν σας να δημιουργήσετε ένα δείγμα για υπηρεσίες παροχής εικονικής διαδρομής, θα πάμε έως μια επισκόπηση των κύριων στοιχείων στο μοντέλο μεταγλώττισης ASP.NET 2.0. Αυτή η Επισκόπηση θα Βοηθήστε μας να κατανοήσετε πώς έχει μεταγλωττιστεί περιεχόμενο από το σύστημα της έκδοσης ASP.NET, από το άνοιγμα και τη δημιουργία της τοποθεσίας Web στο Microsoft Visual Studio για την περιήγηση σε μια ιστοσελίδα.

Η κλάση ClientBuildManager

Για ναClientBuildManagerη κλάση παρέχει τα API για τη δημιουργία συγκροτήσεις, τη δημιουργία πηγαίου κώδικα και εκτέλεση pre-compilation κατά την αλληλεπίδραση με το ASP.NET θα δημιουργήσει σύστημα. Για ναClientBuildManagerη κλάση παρέχει πρόσβαση στο σύστημα build έξω από το Microsoft Internet Information Services (IIS). Χρησιμοποιώντας τοClientBuildManagerκλάση, Visual Studio 2005 παρέχει εντυπωσιακή δυνατότητες όπως το IntelliSense, συμπλήρωση δήλωσης και αναφορά σφαλμάτων πραγματικού χρόνου. Για ναClientBuildManagerη κλάση παρέχει επίσης και εικονικών και φυσικών διαδρομές προς το αρχείο ή αρχεία. Για περισσότερες πληροφορίες, επισκεφθείτε την ακόλουθη τοποθεσία του MSDN στο Web:
http://msdn2.Microsoft.com/en-us/library/System.Web.compilation.clientbuildmanager.aspx (http://msdn2.microsoft.com/en-us/library/system.web.compilation.clientbuildmanager.aspx)

Η κλάση BuildManager

Για ναBuildManagerη κλάση διαχειρίζεται τη διαδικασία για τη μεταγλώττιση των συγκροτήσεων και σελίδες στην εφαρμογή. Για περισσότερες πληροφορίες, επισκεφθείτε την ακόλουθη τοποθεσία του MSDN στο Web:
http://msdn2.Microsoft.com/en-us/library/System.Web.compilation.BuildManager.aspx (http://msdn2.microsoft.com/en-us/library/system.web.compilation.buildmanager.aspx)

Η κλάση το BuildProvider

Για ναBuildProviderclass provides functionality to parse a particular file and generate the corresponding code of the file. For more information, visit the following MSDN Web site:
http://msdn2.microsoft.com/en-us/library/system.web.compilation.buildprovider.aspx (http://msdn2.microsoft.com/en-us/library/system.web.compilation.buildprovider.aspx)

The AssemblyBuilder class

Για ναAssemblyBuilderclass represents a dynamic assembly with a list of all assembly dependencies. This class expects source code or aCodeCompileUnitobject provided by the build provider during a compilation process. Για περισσότερες πληροφορίες, επισκεφθείτε την ακόλουθη τοποθεσία του MSDN στο Web:
http://msdn2.microsoft.com/en-us/library/system.reflection.emit.assemblybuilder(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/system.reflection.emit.assemblybuilder(vs.71).aspx)

Extending virtual path providers to serve virtual content coming from a database

Now that we have a general understanding of virtual path providers and the compilation model, we can create a small SharePoint Portal Services-like application that provides access to non file-based content.

ΣΗΜΕΙΩΣΗBefore we start creating the sample application, let us look at the database structure and the Web site hierarchy used in the sample:

There is only one table that is namedVirtualFileSystemin the database. This table looks like the following:
Σύμπτυξη αυτής της εικόναςΑνάπτυξη αυτής της εικόνας
The VirtualFileSystem
		  table

The Web site hierarchy inside Visual Studio looks like the following:
Σύμπτυξη αυτής της εικόναςΑνάπτυξη αυτής της εικόνας
The hierarchy inside Visual
		  Studio


ΣΗΜΕΙΩΣΕΙΣ
  • The App_Code folder contains all the classes necessary to implement a virtual path provider, such as theVirtualPathProviderη κλάση, τοVirtualDirectoryη κλάση, τοVirtualFileclass, and autilityCLASS.
  • The SharePointDir folder represents a virtual directory. The contents of this virtual directory are stored in the database. Any request for a page inside this folder will be considered as a request to a virtual file by the ASP.NET runtime.
  • The AdminstrationPage.aspx page displays a user interface where we can perform CRUD (Create, Read, Update, and Delete) operations on the virtual content with the help of aGridViewControl. The AdminstrationPage.aspx page looks like the following:
Σύμπτυξη αυτής της εικόναςΑνάπτυξη αυτής της εικόνας
A
		  user interface where we can perform CRUD operations

Let us start building the sample.

Για να το κάνετε αυτό, ακολουθήστε τα εξής βήματα: (Use the tools in the Windows Recovery Environment to repair Windows Vista. To do this, follow these steps:):
  1. Εκκίνηση του Visual Studio 2005.
  2. Create a Web site that has the exact hierarchy and files that appear in the earlier image.
  3. Open the SharePointDirectory.cs source file.
  4. Verify that the following namespaces are included in the SharePointDirectory.cs file:
    using System;
    using System.Collections;
    using System.Data;
    using System.Security.Permissions;
    using System.Web;
    using System.Web.Hosting;
    
  5. Declare aSharePointProviderclass, and inherit theVirtualPathProviderCLASS.
    public class SharePointProvider : 
    VirtualPathProvider
  6. Declare two private members.
    //It contains the file name and content as a key-value pair retrieved 
    //from the database.
    Hashtable virtualFiles = null; 
    DBUtility utility = null;
  7. Προσθήκη τουAppInitializeΗ μέθοδος. Για ναAppInitializemethod is the most important method in this process. The ASP.NET runtime engine calls this method when the application is starting up.

    ΣΗΜΕΙΩΣΗThis method can be considered as a trick where we make the ASP.NET runtime load this class without any Web.config file.

    If we have more than one class together with this method, a build error occurs. Inside this method, we are registering our provider with the ASP.NET hosting environment. Now, every request for a Web page will pass through this provider.
    public static void AppInitialize()
    {
       HostingEnvironment.RegisterVirtualPathProvider(new SharePointProvider());
    }
  8. Implement the constructor for theSharePointProviderCLASS. This step is where we will retrieve all the virtual files and their content in memory for fast access. Until the content is invalidated, we will use the in-memory result set. As soon as the content is changed in the database, the content needs to be updated.
    public SharePointProvider(): base() 
    {
       utility = new DBUtility();
       virtualFiles = utility.GetVirtualFiles();
    }
  9. Next,add theIsPathVirtualΗ μέθοδος. Χρησιμοποιώντας αυτήν τη μέθοδο, εμείς να προσδιορίσετε εάν το ζητούμενο αρχείο προέρχεται από μια εικονική διαδρομή. Αποφασίσαμε ήδη αυτό το αρχείο που ζητήθηκε στο φάκελο SharePointDir θα θεωρηθεί ως εικονικό αρχείο.
    private bool IsPathVirtual(string virtualPath)
    {
       String checkPath = 
          VirtualPathUtility.ToAppRelative(virtualPath);
       return checkPath.StartsWith("~/SharePointDir".ToLower().ToString(), StringComparison.InvariantCultureIgnoreCase);    
    }
  10. Για ναFileExistsη μέθοδος επιστρέφει αν υπάρχει το αρχείο. Αυτό γίνεται επαληθεύοντας ότι υπάρχει το αρχείο που ζητήθηκε στη βάση δεδομένων. Εάν το αρχείο δεν υπάρχει, εμείς θα λάβει η αναφορά του αντικειμένου υπηρεσίας παροχής εικονική διαδρομή ήδη καταχωρημένα στο σύστημα μεταγλώττισης και εμείς θα προσπαθήσει να εντοπίσει ξανά το αρχείο, καλώντας τοFileExistsΗ μέθοδος. Εάν το αρχείο δεν υπάρχει ακόμη, θα λαμβάνουμε άλλη "404 (το αρχείο δεν βρέθηκε)" μήνυμα λάθους.
    public override bool FileExists(string virtualPath)
    {
             if (IsPathVirtual(virtualPath))
             {
                SharePointVirtualFile file = (SharePointVirtualFile)GetFile(virtualPath);
                // Determine whether the file exists on the virtual file 
                // system.
                if (utility.CheckIfFileExists(virtualPath))
                    return true;
                else
                    return Previous.FileExists(virtualPath);
              }
              else
              return Previous.FileExists(virtualPath);
     }
  11. Ομοίως έχουμε τοDirectoryExistsΗ μέθοδος. Αυτή η μέθοδος θα επιστρέψει true αν η υπηρεσία παροχής να υπηρεσία τη διαδρομή του αρχείου εικονικού που μεταβιβάζεται ως όρισμα. Διαφορετικά, η υπηρεσία παροχής θα σας δώσει τη διαδρομή εικονικό αρχείο της υπηρεσίας παροχής ήδη καταχωρημένα κατά τον συνήθη τρόπο και εμείς θα λάβετε μηνύματα σφάλματος 404 ξανά, εάν ο φάκελος δεν υπάρχει.
    public override bool DirectoryExists(string virtualDir)
    {
       if (IsPathVirtual(virtualDir))
       { 
          // Right now, we are not storing the directory information in  
          // our SharePoint Portal Services database. We assume that all of the virtual 
          // content is served from a directory that is named SharePointDir and was
          // created inside the ASP.NET Web site. Therefore, we will always 
          // return TRUE in this case.	
          SharePointVirtualDirectory dir = (SharePointVirtualDirectory)GetDirectory(virtualDir);
          return true;
       }
       else
          return Previous.DirectoryExists(virtualDir);
     }
  12. Στη συνέχεια έχουμε τηνGetFileANDGetDirectoryμεθόδους. Ο χρόνος εκτέλεσης του ASP.NET καλεί αυτές τις μεθόδους στην υπηρεσία παροχής εικονικής διαδρομής μετά τις κλήσεις προς τοFileExistsANDDirectoryExistsΟι μέθοδοι είναι επιτυχής.
    //This method is used by the compilation system to obtain a VirtualFile instance to 
    //work with a given virtual file path.
    public override VirtualFile GetFile(string virtualPath)
    {
       if (IsPathVirtual(virtualPath))
          return new SharePointVirtualFile(virtualPath, this);
       else
          return Previous.GetFile(virtualPath);
    }
    
    //This method is used by the compilation system to obtain a VirtualDirectory 
    //instance to work with a given virtual directory.
    public override VirtualDirectory GetDirectory(string virtualDir)
    {
       if (IsPathVirtual(virtualDir))
           return new SharePointVirtualDirectory(virtualDir, this);
       else
           return Previous.GetDirectory(virtualDir);
    }
  13. Πρέπει να προσθέσουμε μερικές μέθοδοι βοηθητικό πρόγραμμα που θα χρησιμοποιηθεί από τοVirtualFileη κλάση αργότερα σε αυτό το παράδειγμα.
    public string GetFileContents(string virPath)
    {
       return utility.GetFileContents(virPath);	
    }
    
    public Hashtable GetVirtualData
    {
       get { return this.virtualFiles; }
       set { this.virtualFiles = value; }
    }
    ΣΗΜΕΙΩΣΗΣτο παράδειγμα αυτό, δεν χρησιμοποιούμε το μηχανισμό για να ειδοποιήσετε το σύστημα build οποιεσδήποτε αλλαγές γίνονται στο περιεχόμενο εικονική. Η υπηρεσία παροχής εικονικής εκθέτει ένα API που ονομάζεταιGetCacheDependencyπου χρησιμοποιούνται για τη μνήμη cache εικονικοί πόροι. Εμείς μπορεί να ακυρώσει τη μνήμη cache όταν οποιοδήποτε από τα αρχεία δεν είναι πλέον έγκυρο. Για περισσότερες πληροφορίες, επισκεφθείτε την ακόλουθη τοποθεσία του MSDN στο Web:
    http://msdn2.Microsoft.com/en-us/library/System.Web.hosting.virtualpathprovider.getcachedependency.aspx (http://msdn2.microsoft.com/en-us/library/system.web.hosting.virtualpathprovider.getcachedependency.aspx)
  14. Εμείς γίνονται με την κύρια υπηρεσία παροχής κλάσης. Τώρα να ανοίξει το αρχείο προέλευσης SharePointDirectory.cs. Αυτή η κλάση θα αποτελέσει ένα αφαίρεσης virtualized πόρων. Για περισσότερες πληροφορίες σχετικά με τοVirtualDirectoryκλάση, επισκεφθείτε την ακόλουθη τοποθεσία MSDN στο Web:
    http://msdn2.Microsoft.com/en-us/library/System.Web.hosting.virtualdirectory.aspx (http://msdn2.microsoft.com/en-us/library/system.web.hosting.virtualdirectory.aspx)
  15. Επειδή τοVirtualDirectoryη κλάση είναι μια αφηρημένη κλάση, πρέπει να αντικαταστήσει όλες τις συνοπτικές μεθόδους. Ωστόσο, δεν παρέχουμε την υλοποίηση επιπλέον σε αυτές τις μεθόδους αντικατασταθεί επειδή σε αυτό το δείγμα μας προϋποθέτουν ότι κοντεύει εικονικού περιεχομένου μέσα σε μια μεμονωμένη εικονικού καταλόγου. Επομένως, ο ορισμός κλάσης θα μοιάζουν με τα εξής:
    public class SharePointVirtualDirectory : VirtualDirectory
    {
       SharePointProvider spp;
       public SharePointVirtualDirectory(string virtualDir, SharePointProvider provider) : base(virtualDir){spp = provider;}
       private ArrayList children = new ArrayList();
       public override IEnumerable Children {get {return children;}}
       private ArrayList directories = new ArrayList();
       public override IEnumerable Directories{get {return directories;}}
       private ArrayList files = new ArrayList();
       public override IEnumerable Files{get { return files;}}
    }
  16. Τώρα, είναι έτοιμη για να καθορίσετε μία η περισσότερες κλάση που ονομάζεταιSharePointVirtualFileπου επεκτείνει τοVirtualFileσυνοπτική κλάση. Αυτή η κλάση θα έχει μία αντικατασταθεί Συνοπτική μέθοδος που ονομάζεταιOpenFile. Για ναOpenFileη μέθοδος επιστρέφει μια παρουσία ροής που χρησιμοποιείται από το ASP.NET δημιουργία περιβάλλοντος να καταναλώνουν το εικονικό αρχείο.
    public class SharePointVirtualFile : VirtualFile
    {
       private SharePointProvider spp;
       private string virPath;
    
       public SharePointVirtualFile(string virtualPath, SharePointProvider provider) : base(virtualPath)
       {
          this.spp = provider;
          this.virPath = virtualPath;
        }
    
        public override Stream Open()
        {
           string fileContents = spp.GetFileContents(virPath);
           Stream stream = new MemoryStream();
           if (fileContents != null || fileContents.Equals(String.Empty))
           {
               // Put the page content on the stream.
               StreamWriter writer = new StreamWriter(stream);
               writer.Write(fileContents);
               writer.Flush();
               stream.Seek(0, SeekOrigin.Begin);
            }
            return stream;
          }
    }
  17. Τέλος, ορίζουμε θα τοDBUtiliityκλάση με τοDBUtility.csFILE. Η υλοποίηση μεθόδου δεν παρέχεται. Για ναDBUtiliityη κλάση χρησιμοποιείται από κλάσεις υπηρεσιών παροχής για να αποκτήσετε το περιεχόμενο από τη βάση δεδομένων μαζί με μερικές άλλες λειτουργίες του βοηθητικού προγράμματος.
    public class DBUtility
    {
       SqlConnection cnn;
       string connectionString = "connectionstring to DB…";
        
       //Run a select query to obtain all files and their content, and 
       //store the result in a in memory hashtable to obtain fast access.	
       string cmdSelectAllFiles = "SELECT FileName,FileData FROM VirtualFileSystem";
       Hashtable virtualFiles = null;
    
       public DBUtility(){ virtualFiles = new Hashtable();}
    
       public Hashtable GetVirtualFiles()
       {
          /* 1. Open a connection.  
             2. Select all the files.
             3. Iterate through the result and store the file name as a Key and
                content as a Value in a hashtable.
             4. Finally return hashtable.
          */
          return virtualFiles;
        }
    
       public string GetFileContents(string virPath)
       {
          //Obtain a file name from the virtual path. 
          string fileName = ExtractFileName(virPath);
            
          //Ater you obtain the file name, find it in the hashtable, and then
          //return the content for that file from the Values collection.	
        }
    
       private string ExtractFileName(string virPath)
       {
           //Extract a file name from the virtual path and return it.
       }
    
       public bool CheckIfFileExists(string virPath)
       {
           string fileName = ExtractFileName(virPath);
           //After you extract the file name, find it in the hashtable of 
           //virtual files. If the file name is found, return true. Otherwise, return false.	
        }
    }
    
    ΣΗΜΕΙΩΣΗΠρέπει να θυμάστε είναι ότι δήλωση μιας υπηρεσίας παροχής είναι μια προνομιακή λειτουργία, διότι μπορεί να αλλάζει το περιεχόμενο που έχει αποδοθεί. Προσαρμοσμένη κλάσεων για τοVirtualPathProvider,VirtualDirectoryANDVirtualFileκλάσεις πρέπει να εκτελείταιΠλήρης (Full)δικαιώματα αξιοπιστίας. Για περισσότερες πληροφορίες, επισκεφθείτε την ακόλουθη τοποθεσία του MSDN στο Web:
    http://msdn2.Microsoft.com/en-us/library/System.Web.aspnethostingpermission.aspx (http://msdn2.microsoft.com/en-us/library/system.web.aspnethostingpermission.aspx)
  18. Μας έχουν κάνει εγγραφή τις κλάσεις υπηρεσιών παροχής και τώρα μας εφαρμογής είναι έτοιμη να προσφέρει το εικονικό περιεχόμενο. Για να δώσετε στην εφαρμογή, την εμφάνιση και τη συμπεριφορά μιας ιστοσελίδας διαχείρισης του SharePoint Portal υπηρεσιών, έχουν δημιούργησα έναAdministrationPage.aspxσελίδα στον ριζικό φάκελο της τοποθεσίας Web. Η σελίδα περιέχει έναGridViewστοιχείο ελέγχου που είναι συνδεδεμένο με έναν εικονικό πίνακα.
    <asp:GridView ID="GridView1" runat="server"  
          AutoGenerateColumns="False" DataSourceID="SqlDataSource1" >
        <Columns>
          <asp:BoundField DataField="FileName" HeaderText="FileName" />
          <asp:TemplateField HeaderText="Remote Content" >
            <ItemTemplate>
              <asp:Label ID="Label1" runat="server"  
                         Text="FileContent...."></asp:Label>
            </ItemTemplate>
            <EditItemTemplate>
              <asp:TextBox ID="Label1" runat="server" Text='<%# 
                    Eval("FileData", "{0}") %>'></asp:TextBox>
            </EditItemTemplate>
            </asp:TemplateField>
            <asp:HyperLinkField HeaderText="Virtual Path" 
                 DataTextField="VirtualPath" Target="_self" 
                 DataNavigateUrlFormatString= "{0}"  
                 DataNavigateUrlFields="VirtualPath" />   
            <asp:CommandField  ShowEditButton="True" 
                 ShowDeleteButton="True" CausesValidation="false" 
                 HeaderText="Operations" CancelText="Cancel" />   
       </Columns>
    </asp:GridView>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                       ConnectionString="<%$ 
        ConnectionStrings:VirtualProviderDBConnectionString %>"
        SelectCommand="SELECT [FileName], [FileData], [VirtualPath] FROM 
        [VirtualFileSystem] Where [FileName] LIKE '%aspx%'”>
    </asp:SqlDataSource>
    

Ολοκλήρωση

Για τις υπηρεσίες παροχής εικονικής διαδρομής είναι όλα τα προς το παρόν. Ελπίζω ότι αυτή η στήλη θα σας βοηθήσει να κατανοήσετε τη διαδικασία μεταγλώττισης βασικό για το ASP.NET 2.0 και πώς μας να αφήσετε το χρόνο εκτέλεσης του ASP.NET εργάζεται με περιεχόμενο που βασίζεται σε μη αρχείου, όπως το περιεχόμενο που εξυπηρετούνται από μια βάση δεδομένων.

Ευχαριστούμε για την ώρα. Εμείς πρόκειται να γράψει περισσότερα σχετικά με τις νέες δυνατότητες που προστέθηκαν στο ASP.NET 2.0. Για περισσότερες πληροφορίες και δείγματα, επισκεφθείτε τις τοποθεσίες MSDN στο Web:
Επισκόπηση της μεταγλώττισης ASP.NET
http://msdn2.Microsoft.com/en-us/library/ms178466.aspx (http://msdn2.microsoft.com/en-us/library/ms178466.aspx)

Virtualizing πρόσβαση σε περιεχόμενο: που εξυπηρετεί την τοποθεσία σας από ένα αρχείο ZIP
http://msdn2.Microsoft.com/en-us/library/aa479502.aspx (http://msdn2.microsoft.com/en-us/library/aa479502.aspx)
Πάντα, αίσθηση ελεύθερο να υποβάλλουν ιδέες σχετικά με θέματα που θέλετε στο μέλλον απευθύνεται στήλες ή με τη χρήση της Γνωσιακής Βάσης τηςΕρώτηση για την (http://support.microsoft.com/common/survey.aspx?scid=sw;en;1176&p0=&p1=&p2=&p3=&p4=) MAPI.

Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft ASP.NET 2.0
Λέξεις-κλειδιά: 
kbhowto kbasp kbmt KB910441 KbMtel
Μηχανικά μεταφρασμένοΜηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:910441  (http://support.microsoft.com/kb/910441/en-us/ )