Αναγν. άρθρου: 307996 - Τελευταία αναθεώρηση: Δευτέρα, 20 Δεκεμβρίου 2010 - Αναθεώρηση: 2.0

Τρόπος δημιουργίας μιας λειτουργικής μονάδας HTTP ASP.NET χρησιμοποιώντας το Visual C# .NET

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

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

Ανάπτυξη όλων | Σύμπτυξη όλων
Αυτό το άρθρο βήμα προς βήμα περιγράφει τον τρόπο χρήσης της Visual C# .NET για να δημιουργήσετε μια απλή, προσαρμοσμένη λειτουργική μονάδα HTTP. Αυτό το άρθρο επιδεικνύει τον τρόπο δημιουργίας, ανάπτυξη και ρύθμιση των παραμέτρων της λειτουργικής μονάδας, καθώς και με την εγκατάσταση ενός συμβάντος για τη λειτουργική μονάδα στο αρχείο Global.asax.

Περισσότερες πληροφορίες

Υλοποίηση της λειτουργικής μονάδας

  1. Για να δημιουργήσετε ένα νέο έργο του Visual Studio .NET C# Class Library που ονομάζεται MyModule.
  2. Ορίστε μία παραπομπή τοSystem.Web.dllη συγκρότηση.
  3. Προσθέστε την παρακάτω οδηγία στην κλάση:
    using System.Web;					
  4. Μετονομάστε την κλάση SyncModule.cs και στη συνέχεια αλλάξτε τον ορισμό κλάσης για να απεικονίσετε αυτό.
  5. Εγκαταστήστε τοIHttpModuleΔιασύνδεση. Τον ορισμό κλάσης πρέπει να εμφανίζεται ως εξής:
    public class SyncModule : IHttpModule					
  6. Αποφασίστε ποια συμβάντα θα εγγραφείτε. Η ακόλουθη λίστα περιγράφει τα συμβάντα που είναι διαθέσιμες από τοHttpApplicationτο αντικείμενο στο οποίο μπορείτε να εγγραφείτε:
    • AcquireRequestState: Να καλέσετε αυτό το συμβάν για να επιτρέψετε τη λειτουργική μονάδα για να αποκτήσετε ή να δημιουργήσετε την κατάσταση (για παράδειγμα περίοδος λειτουργίας) για την αίτηση.
    • AuthenticateRequest: Η κλήση αυτού του συμβάντος όταν μια λειτουργική μονάδα ασφαλείας πρέπει να ελέγχουν την ταυτότητα του χρήστη πριν από την επεξεργασία της αίτησης.
    • AuthorizeRequest: Κλήση αυτού του συμβάντος από μια λειτουργική μονάδα ασφαλείας, όταν η αίτηση πρέπει να είναι εξουσιοδοτημένοι. Ονομάζεται και μετά τον έλεγχο ταυτότητας.
    • BeginRequest: Αυτό το συμβάν για να ενημερώσετε μια λειτουργική μονάδα που ζητούν νέα ξεκινά η κλήση.
    • Απόσυρση: Αυτό το συμβάν για να ενημερώσετε τη λειτουργική μονάδα που τερματίζει την εφαρμογή για κάποιο λόγο η κλήση. Επιτρέπει τη λειτουργική μονάδα για να πραγματοποιήσετε εκκαθάριση εσωτερικό.
    • EndRequest: Να καλέσετε αυτό το συμβάν για να ενημερώσετε τη λειτουργική μονάδα που τερματίζει την αίτηση.
    • ΣΦΑΛΜΑ: Να καλέσετε αυτό το συμβάν για να ενημερώσετε τη λειτουργική μονάδα της σφάλμα που παρουσιάζεται κατά την επεξεργασία της αίτησης.
    • PostRequestHandlerExecute: Να καλέσετε αυτό το συμβάν για να ενημερώσετε τη λειτουργική μονάδα που το πρόγραμμα χειρισμού ολοκλήρωσε την επεξεργασία της αίτησης.
    • PreRequestHandlerExecute: Να καλέσετε αυτό το συμβάν για να ενημερώσετε τη λειτουργική μονάδα που πρόκειται να κληθεί το δείκτη χειρισμού για την αίτηση.
    • PreSendRequestContent: Να καλέσετε αυτό το συμβάν για να ενημερώσετε τη λειτουργική μονάδα που το περιεχόμενο που πρόκειται να σταλούν στον υπολογιστή-πελάτη.
    • PreSendRequestHeaders: Να καλέσετε αυτό το συμβάν για να ενημερώσετε τη λειτουργική μονάδα που τις κεφαλίδες HTTP που πρόκειται να σταλούν στον υπολογιστή-πελάτη.
    • ReleaseRequestState: Να καλέσετε αυτό το συμβάν για να επιτρέψετε τη λειτουργική μονάδα για να απελευθερώσετε κατάσταση, επειδή το πρόγραμμα χειρισμού ολοκλήρωσε την επεξεργασία της αίτησης.
    • ResolveRequestCache: Η κλήση αυτού του συμβάντος μετά τον έλεγχο ταυτότητας. Προσωρινή αποθήκευση λειτουργικές μονάδες χρησιμοποιούν αυτό το συμβάν για να προσδιορίσετε εάν θα γίνεται η επεξεργασία της αίτησης από τη μνήμη cache ή εάν ένα πρόγραμμα χειρισμού πρέπει να επεξεργαστεί την αίτηση.
    • UpdateRequestCache: Η κλήση αυτού του συμβάντος μετά την απόκριση από το πρόγραμμα χειρισμού. Προσωρινή αποθήκευση λειτουργικές μονάδες, πρέπει να ενημερώσετε τους cache με την απόκριση.
    Αυτό το δείγμα χρησιμοποιεί τοBeginRequestΣυμβάν.
  7. Εγκαταστήστε τοΠαρουσιάστηκε σφάλμαANDΕκποίησημέθοδοι για τηνIHttpModuleδιασύνδεσης ως εξής:
    public void Init(HttpApplication app)
    {
       app.BeginRequest += new EventHandler(OnBeginRequest);
    }
    
    public void Dispose(){ }					
  8. Δημιουργήστε έναν πληρεξούσιο για ένα συμβάν ως εξής:
    public delegate void MyEventHandler(Object s, EventArgs e);					
  9. Καθορίστε μια τοπική μεταβλητή ιδιωτικό του τύπουMyEventHandlerΓια να χωρέσει μια αναφορά για το συμβάν:
    private MyEventHandler _eventHandler = null;					
  10. Δημιουργία ενός συμβάντος που αγκιστρώνει μέχρι την παραπομπή στη μέθοδο του αρχείου Global.asax ή την κλάση που μεταβιβάζονται από τοHttpApplicationObject:
    public event MyEventHandler MyEvent
    {
       add { _eventHandler += value; }
       remove { _eventHandler -= value; }
    }					
  11. Δημιουργήστε τοOnBeginRequestμέθοδος, η οποία αγκιστρώνει έως τοBeginRequestσυμβάν τουHttpApplication:
    public void OnBeginRequest(Object s, EventArgs e)
    {
       HttpApplication app = s as HttpApplication;
       app.Context.Response.Write("Hello from OnBeginRequest in custom module.<br>");
       if(_eventHandler!=null)
          _eventHandler(this, null);
    }					
  12. Μεταγλωττίστε το έργο.

Ανάπτυξη της λειτουργικής μονάδας

  1. Δημιουργήστε έναν νέο κατάλογο στην περιοχή που ονομάζεται μονάδα C:\Inetpub\Wwwroot.
  2. Δημιουργήστε έναν υποκατάλογο που ονομάζεται Ανακύκλωσης στον κατάλογο λειτουργικής μονάδας που μόλις δημιουργήσατε. Η διαδρομή που προκύπτει είναι C:\Inetpub\Wwwroot\Module\Bin.
  3. Αντιγραφή MyModule.dll από το έργο σας κατάλογο Bin\Debug στον κατάλογο C:\Inetpub\Wwwroot\Module\Bin.
  4. Ακολουθήστε τα παρακάτω βήματα για να επισημάνετε το νέο κατάλογο λειτουργική μονάδα ως μια εφαρμογή Web:
    1. Ανοίξτε τη Διαχείριση υπηρεσιών Internet (Internet Services Manager).
    2. Κάντε δεξιό κλικ στον κατάλογο της μονάδας και στη συνέχεια κάντε κλικ στο κουμπίΙδιότητες (Properties).
    3. Στο διακομιστήΚατάλογοςκαρτέλα, κάντε κλικ στο κουμπίCreate.
    4. Κάντε κλικOkΓια να κλείσετε τοΙδιότητες λειτουργικής μονάδαςπαράθυρο διαλόγου.

Ρύθμιση παραμέτρων του συστήματος

  1. Στον κατάλογο C:\Inetpub\Wwwroot\Module\, δημιουργήστε ένα νέο αρχείο με όνομα Web.config.
  2. Επικολλήστε το ακόλουθο κείμενο στο Web.config:
    <configuration>
       <system.web>
          <httpModules>
             <add name="MyModule" type="MyModule.SyncModule, MyModule" />
          </httpModules>
       </system.web>
    </configuration>					

Test the Module

  1. In the C:\Inetpub\Wwwroot\Module directory, create a new .aspx file named Test.aspx.
  2. Paste the following text into Test.aspx:
    <%@Page Language="C#"%>
    <% Response.Write("Hello from Test.aspx.<br>"); %>					
  3. In the C:\Inetpub\Wwwroot\Module directory, create a Global.asax file.
  4. Paste the following code into Global.asax:
    <%@ Import Namespace="MyModule" %>
    
    <script language="C#" runat=server >
    protected void MyModule_OnMyEvent(Object src, EventArgs e)
    {	
      Context.Response.Write("Hello from MyModule_OnMyEvent called in Global.asax.<br>");
    }
    </script>					
  5. Request the Test.aspx page. You should see the following lines of text:
    Hello from OnBeginRequest in custom module.
    Hello from MyModule_OnMyEvent called in Global.asax.
    Hello from Test.aspx.					

Αναφορές

For additional information about HttpHandlers, click the article number below to view the article in the Microsoft Knowledge Base:
307985  (http://support.microsoft.com/kb/307985/EN-US/ ) INFO: ASP.NET HTTP Modules and HTTP Handlers Overview


Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
Λέξεις-κλειδιά: 
kbconfig kbhowtomaster kbhttpmodule kbhttpruntime kbweb kbmt KB307996 KbMtel
Μηχανικά μεταφρασμένοΜηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:307996  (http://support.microsoft.com/kb/307996/en-us/ )