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

Εργασία με πόρους Web στο ASP.NET 2.0

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

Εργασία με πόρους Web στο ASP.NET 2.0

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

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

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

ΕΙΣΑΓΩΓΗ

Υψηλής! Το όνομά μου είναι Praveen Yerneni και είμαι μια τεχνική επικεφαλής εργάζονται με την ομάδα υποστήριξης του ASP.NET στο Microsoft. Στη στήλη αυτού του μήνα, μου πρόκειται να συζητήσετε σχετικά με πόρους Web και πώς να τις εφαρμόσετε στην εφαρμογή σας.

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

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

Μπορείτε να κάνετε λήψη του δείγματος κώδικα σε αυτό το άρθρο από το Κέντρο λήψης της Microsoft.

Τα ακόλουθα αρχεία είναι διαθέσιμα για λήψη από το Κέντρο λήψης αρχείων της Microsoft:
Σύμπτυξη αυτής της εικόναςΑνάπτυξη αυτής της εικόνας
Λήψη
Άμεση λήψη του πακέτου ConsumeControl.exe. (http://download.microsoft.com/download/A/6/C/A6CB843E-7EDA-42FB-ADE5-1F77D893C1E3/ConsumeControl.exe)
Σύμπτυξη αυτής της εικόναςΑνάπτυξη αυτής της εικόνας
Λήψη
Άμεση λήψη του πακέτου SimpleControl.exe. (http://download.microsoft.com/download/A/6/C/A6CB843E-7EDA-42FB-ADE5-1F77D893C1E3/SimpleControl.exe)
Για περισσότερες πληροφορίες σχετικά με τον τρόπο λήψης αρχείων υποστήριξης της Microsoft, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής βάσης της Microsoft:
119591  (http://support.microsoft.com/kb/119591/ ) Τρόπος απόκτησης αρχείων υποστήριξης της Microsoft από ηλεκτρονικές υπηρεσίες
Η Microsoft εξέτασε το αρχείο αυτό για ιούς. Η Microsoft χρησιμοποίησε το πιο πρόσφατο λογισμικό εντοπισμού ιών που ήταν διαθέσιμο κατά την ημερομηνία δημοσίευσης του αρχείου. Το αρχείο είναι αποθηκευμένο σε διακομιστές με ενισχυμένη ασφάλεια, οι οποίοι συμβάλλουν στην αποτροπή μη εξουσιοδοτημένων αλλαγών στο αρχείο.

Πώς λειτουργούν οι πόροι Web

Πόροι Web βασίζονται σε ένα ειδικό χειρισμό που ονομάζεται WebResource.axd, το οποίο έχει σχεδιαστεί για να ανακτήσετε πόρους συγκρότηση και εξυπηρετούν τους στο πρόγραμμα περιήγησης Web. Είναι ο τύπος του δείκτη χειρισμού για WebResource.axdAssemblyResourceLoader.

Όταν μια αίτηση προέρχεται από τον υπολογιστή-πελάτη για WebResource.axd, το πρόγραμμα χειρισμού αναζητεί το αναγνωριστικό πόρου Web στο στοQueryStringη μέθοδος τουΑίτησηObject. Ανάλογα με την τιμή του αναγνωριστικού πόρων Web, το πρόγραμμα χειρισμού στη συνέχεια προσπαθεί να φορτώσει τη συγκρότηση που περιέχει αυτόν τον πόρο. Εάν αυτή η λειτουργία είναι επιτυχής, το πρόγραμμα χειρισμού θα στη συνέχεια αναζητήστε το χαρακτηριστικό συγκρότησης και φορτώσει τη ροή πόρων από τη συγκρότηση. Τέλος, ο δείκτης χειρισμού θα μεταφέρετε τα δεδομένα από τη ροή πόρων και να στείλετε στον υπολογιστή-πελάτη, μαζί με τον τύπο περιεχομένου που έχετε καθορίσει στο χαρακτηριστικό συγκρότησης.

Η διεύθυνση URL για WebResource.axd μοιάζει με το ακόλουθο:
WebResource.axd?d=SbXSD3uTnhYsK4gMD8fL84_mHPC5jJ7lfdnr1_WtsftZiUOZ6IXYG8QCXW86UizF0&t=632768953157700078
Η μορφή αυτού του URL είναι WebResource.axd?d=κρυπτογραφημένου αναγνωριστικού& t =τιμή σήμανσης χρόνου. "d" αντιστοιχεί στον πόρο που ζητήθηκε Web. "t" είναι η χρονική σήμανση για τη συγκρότηση που ζητήσατε, το οποίο μπορεί να σας βοηθήσει στον προσδιορισμό του αν έχουν γίνει αλλαγές στον πόρο.

Delving στον κώδικα του

Στο παράδειγμα μου, μου έχει αναπτύξει ένα στοιχείο ελέγχου COM που χρησιμοποιείται από μια εφαρμογή Web του ASP.NET για να περιγράψετε αυτή η νέα δυνατότητα.

Στοιχείο ελέγχου COM για το Web πόρων

Για τη δημιουργία και την ενσωμάτωση ενός πόρου Web, μου έχει αναπτύξει ένα COM ελέγχουν ()SimpleControl). Διαθέτει ενσωματωμένο στους παρακάτω πόρους:
  • Δύο εικόνας σε αρχεία που ονομάζονται smallFail.gif και smallSuccess.gif. Αυτά τα αρχεία εικόνων που χρησιμοποιούνται για εφέ κατάδειξης στο στοιχείο ελέγχου και καταναλώνονται μέσα στον κώδικα του στοιχείου ελέγχου.
  • Ένα αρχείο HTML που ονομάζεται Help.htm. Αυτό το αρχείο δεν περιέχει πολύ κείμενο και προορίζεται απλώς για επίδειξη.
  • Ένα αρχείο JavaScript που ονομάζεται MyScript.js. Αυτό το αρχείο περιέχει κάποιον κώδικα JavaScript που δείχνει επίσης τη δυνατότητα υποκατάστασης για να λάβετε μια αναφορά σε άλλο ενσωματωμένο πόρο μέσα στη ίδια συγκρότηση.
  • Ένα αρχείο .css που ονομάζεται MyStyleSheet.css. Αυτό το φύλλο στυλ χρησιμοποιείται στη συνέχεια απευθείας από την εφαρμογή Web του ASP.NET.
In this article, I will discuss the parts that are required for Web Resources.
Embedding the Web Resources
First, you have to make sure that all the static files that are added to the Web Control Library project in Microsoft Visual Studio 2005 are embedded resources. To embed these resources, all that you have to do is add these files to Visual Studio and then modify the properties of these files so that the build action is set toEmbedded Resource.

After you have done this, you also have to make sure that these resources have been referenced by theWebResourceassembly attribute in the AssemblyInfo.cs file as shown below.
[assembly: WebResource("SimpleControl.Help.htm", "text/html")]
[assembly: WebResource("SimpleControl.MyStyleSheet.css", "text/css")]
[assembly: WebResource("SimpleControl.smallFail.gif", "image/gif")]
[assembly: WebResource("SimpleControl.smallSuccess.gif", "image/gif")]
[assembly: WebResource("SimpleControl.MyScript.js", "text/javascript", PerformSubstitution = true)]

Για ναWebResourceassembly attribute has three parameters as follows:
  • Web Resource: The name of the resource that is embedded in the assembly
  • ContentType: The MIME file type for the resource
  • PerformSubstitution: A Boolean value that determines whether other Web Resource URLs that are referenced in this resource are parsed and replaced with the full path of the resource
Fetching the Web Resources
For getting the Web Resource, I have used theGetWebResourceUrlmethod, which is a method of theClientScriptManagerclass that is typically used for managing client-side scripts. This method returns a URL reference to the server-side resource that is embedded in an assembly. Για ναGetWebResourceUrlmethod accepts the following two parameters:
  • TYPE: The type of the server-side resource
  • Resource Name: The name of the server-side resource
To use this method, first you have to create an instance of theClientScriptManagerclass and get the type of the class as shown below.
ClientScriptManager cs = Page.ClientScript;
            Type rsType = this.GetType();

When you have an instance of this class, you then have to call this method and pass the appropriate parameters as shown below, where I create aHyperLinkbutton, and set theNavigateURLmethod to point to an embedded HTML resource.
HyperLink hlHelpFile = new HyperLink();
            hlHelpFile.NavigateUrl = cs.GetWebResourceUrl(rsType, "SimpleControl.Help.htm");
            hlHelpFile.Attributes.Add("onmouseover", "ChangeImage('image1','Red')");
            hlHelpFile.Attributes.Add("onmouseout", "RollbackImage('image1','Green')");
            
            this.Controls.Add(hlHelpFile);

            Image imgTest = new Image();
            imgTest.ImageUrl = cs.GetWebResourceUrl(rsType, "SimpleControl.smallFail.gif");
            imgTest.ID = "image1";
            hlHelpFile.Controls.Add(imgTest);

Also in the same code listing above, I have created anImageκουμπί και τοImageUrlattribute is getting its value from another embedded .gif image resource.
Using the Substitution feature
Another useful feature of using Web Resources is thePerformSubstitutionη ιδιότητα από τοWebResourceattribute as shown in the "Embedding the Web Resources" section above. This feature lets you actually get Web Resources inside another embedded resource. If this property is enabled, theWebResourcehandler will parse the embedded resource and replace the syntax for theWebResourceassembly attribute with actual resources before serving the page.

In the code above, you will notice that theHyperLinkcontrol has a client-side event that is namedChangeImage. Αυτή ηChangeImagefunction is located in a script file. The following is the code for this script.
function ChangeImage(imgControl,varcolor){
   document.getElementById(imgControl).src = '<%= WebResource("SimpleControl.smallSuccess.gif")%>';
    document.getElementById('Label1').style.color = varcolor;
}

function RollbackImage(imgControl, varcolor){
   document.getElementById(imgControl).src = '<%= WebResource("SimpleControl.smallFail.gif")%>';
   document.getElementById('Label1').style.color = varcolor;
}
This script file that is named MyScript.js is also an embedded resource in the same COM control. And notice that I am using theWebResourcemethod to refer to another embedded resource in the script file.

Also, to make sure that this JavaScript file is registered in the page, I use theRegisterClientScriptIncludeη μέθοδος τουClientScriptManagerclass as shown below.
cs.RegisterClientScriptInclude("MyScript", cs.GetWebResourceUrl(rsType, "SimpleControl.MyScript.js"));

Consuming the control in ASP.NET

Από τη στιγμή που έχουν δημιουργηθεί με επιτυχία το στοιχείο ελέγχου COM, πρέπει να καταναλώνουν αυτό το στοιχείο ελέγχου σε ένα υπολογιστή-πελάτη ASP.NET έργο. Για να γίνει αυτό, αρκεί να προσθέσετε το στοιχείο ελέγχου στην εργαλειοθήκη στο ASP.NET. Στη συνέχεια, μπορείτε να προσθέσετε το στοιχείο ελέγχου σε οποιαδήποτε φόρμα Web στο πρόγραμμα σχεδίασης.

Κατά την προσθήκη του στοιχείου ελέγχου στην εργαλειοθήκη, το στοιχείο ελέγχου έχει καταχωρηθεί για εσάς και τον ακόλουθο κώδικα προστίθεται όταν εξετάζετε τη σύνταξη HTML.
<cc1:MSButton ID="MSButton1" runat="server" strText="Problems?"></cc1:MSButton>
Μου στοιχείο COM, μου έχουν ενσωματωθεί επίσης ένα αρχείο φύλλου στυλ, που πρόκειται να χρησιμοποιήσετε μου μου εφαρμογής ASP.NET. Για να αποκτήσετε πρόσβαση σε αυτό το φύλλο στυλ, πρέπει να προσθέσετε μια σύνδεσηHtmlControlστο HTML της σελίδας και ορίστε τοRUNATη ιδιότητα ναSERVERόπως φαίνεται παρακάτω.
<link rel="Stylesheet"  id="lnkStyle" runat="server"  />
Μετά από αυτό, να ορίσετε μέσω προγραμματισμού το"Href"χαρακτηριστικό αυτού του στοιχείου ελέγχου ώστε να δείχνει προς τοWebResourceχαρακτηριστικό συγκρότησης τουPage_Loadσυμβάν, όπως φαίνεται παρακάτω.
protected void Page_Load(object sender, EventArgs e)
    {
        //Get the name of the Web Resource.
        String rsname = "SimpleControl.MyStyleSheet.css";
        
        //Get the type of the class.
        Type rstype = typeof(SimpleControl.MSButton);

        // Get a ClientScriptManager reference from the Page class.
        ClientScriptManager cs = Page.ClientScript;
        lnkStyle.Href = cs.GetWebResourceUrl(rstype, rsname);
     }

Όταν εκτελείτε τον κώδικα, θα δείτε ένα στοιχείο ελέγχου που να μοιάζει με το ακόλουθο:
Σύμπτυξη αυτής της εικόναςΑνάπτυξη αυτής της εικόνας
μικρό αποτυχίας
Και του ποντικιού επάνω στο στοιχείο ελέγχου θα φαίνεται ως εξής:
Σύμπτυξη αυτής της εικόναςΑνάπτυξη αυτής της εικόνας
μικρό επιτυχίας
Όταν κάνετε κλικ σε αυτήν τη σύνδεση, αυτό θα σας οδηγήσει στη σελίδα Βοήθειας, που είναι ενσωματωμένο στο αρχείο συγκρότησης ελέγχου COM.

Ολοκλήρωση

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

Στο ASP.NET 2.0, WebResource.axd χρησιμοποιείται εσωτερικά από το Microsoft .NET Framework για να ανακτήσετε πόρους ενσωματωμένο. Για παράδειγμα, το .NET Framework χρησιμοποιεί WebResource.axd για να ανακτήσετε το αρχείο δέσμης ενεργειών WebUIValidation.js που χρησιμοποιείται γιαΕπικύρωσητα στοιχεία ελέγχου και να ανακτήσετε το αρχείο δέσμης ενεργειών Menu.js γιαΜενού (Menu)"Φόρμες του Office" (Office Forms).

Αναφορές

Για περισσότερες πληροφορίες, επισκεφθείτε τις ακόλουθες τοποθεσίες της Microsoft στο Web:
Η μέθοδος ClientScriptManager.GetWebResourceUrl
http://msdn2.Microsoft.com/en-us/library(d=robot) /system.web.ui.clientscriptmanager.getwebresourceurl.aspx (http://msdn2.microsoft.com/en-us/library(d=robot)/system.web.ui.clientscriptmanager.getwebresourceurl.aspx)

Η κλάση WebResourceAttribute
http://msdn2.Microsoft.com/en-us/library(d=robot) /system.web.ui.webresourceattribute.aspx (http://msdn2.microsoft.com/en-us/library(d=robot)/system.web.ui.webresourceattribute.aspx)

Συνδεδεμένα και ενσωματωμένα πόρους
http://msdn2.Microsoft.com/en-us/library/ht9h2dk8.aspx (http://msdn2.microsoft.com/en-us/library/ht9h2dk8.aspx)
Για περισσότερες πληροφορίες σχετικά με πόρους Web, δείτε το παρακάτω ιστολόγια, Nikhil Kothari:
Whats με System.Web.UI.WebResourceAttribute;
http://www.nikhilk.NET/WebResourceAttribute.aspx (http://www.nikhilk.net/WebResourceAttribute.aspx)

Αμβλύνουν τις επιπτώσεις επιθέσεις άρνησης υπηρεσίας με πόρους Web
http://www.nikhilk.NET/WebResourcesDenialOfServiceAttack.aspx (http://www.nikhilk.net/WebResourcesDenialOfServiceAttack.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 KB910442 KbMtel
Μηχανικά μεταφρασμένοΜηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:910442  (http://support.microsoft.com/kb/910442/en-us/ )
Retired KB ArticleΑποποίηση ευθυνών για περιεχόμενο της Γνωσιακής Βάσης (KB) που έχει αποσυρθεί
This article was written about products for which Microsoft no longer offers support. Therefore, this article is offered "as is" and will no longer be updated.