Makale numarası: 307996 - Son Gözden Geçirme: 15 Temmuz 2004 Perşembe - Gözden geçirme: 3.6

Bir ASP.NET HTTP modülü Visual C#. NET'i kullanarak oluşturma

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.

Bu Sayfada

Hepsini aç | Hepsini kapa
Bu adım adım makalede, Visual C# .NET basit, özel bir HTTP modülü oluşturmak için nasıl kullanılacağını gösterir. Bu makalede, oluşturmak, dağıtmak ve modülü yapılandırma nasıl yan? s?ra modülünde bir Global.asax dosyasına bir olayı oluşturan kanca nasıl gösterilmektedir.

Daha fazla bilgi

Modül Uygula

  1. MyModule adlı yeni bir Visual Studio .NET C# sınıf kitaplığı projesi oluşturun.
  2. System.Web.dll derlemesine ayarlayın.
  3. Sınıf için şu yönergeyi ekleyin:
    using System.Web;					
  4. Sınıf SyncModule.cs olarak yeniden adlandırın ve sonra bunu yansıtması için sınıf tanımını değiştirin.
  5. ıhttpmodule arabirimini uygular. Bilgisayarınıza bir sınıf tanımı aşağıdaki gibi görünmelidir:
    public class SyncModule : IHttpModule					
  6. Karar vermek için hangi olayların abone. Aşağıdaki listede, kullanılabilir olayları abone olabileceğiniz HttpApplication nesnesinden önerilmektedir:
    • AcquireRequestState: Modül durumunu (örneğin, oturum) isteği almak veya vermek için bu olay çağrısı.
    • AuthenticateRequest: güvenlik modülü, isteği işler için önce kullanıcı kimlik doğrulaması gerektiğinde, bu olay çağrısı.
    • AuthorizeRequest: istek yetkiniz gerektiğinde bu olay, bir güvenlik modülü tarafından çağrısı. Kimlik doğrulamasından sonra</a1> olarak adlandırılır.
    • BeginRequest: yeni bir isteği başlayan bir modüle bildirmek için bu olay çağrısı.
    • Disposed: uygulama, herhangi bir nedenle bitiş modül bildirmek için bu olay çağrısı. Iç temizleme gerçekleştirmek modül) verir.
    • EndRequest: istek Sonlandırma Modülü bildirmek için bu olay çağrısı.
    • Hata: istek işlenirken oluşan bir hata modülü bildirmek için bu olay çağrısı.
    • PostRequestHandlerExecute: Bu olay işleyiciyi isteği işlemeyi tamamladı modülü bildirmek için arama.
    • PreRequestHandlerExecute: istek işleyicisini yaklaşık olarak modülünü bildirmek için bu olay çağrısı.
    • PreSendRequestContent: içerik istemciye gönderilecek modülünü bildirmek için bu olay çağrısı.
    • PreSendRequestHeaders: HTTP başlıklarını istemciye gönderilecek olan modül bildirmek için bu olay çağrısı.
    • ReleaseRequestState: Bu olay işleyiciyi isteği işlemeyi tamamladı çünkü durumu yayımlamayı modülü izin vermek için arama.
    • ResolveRequestCache: Bu olay, kimlik doğrulamasından sonra Call. Önbelleğe alma modülleri bu olay, isteği önbelleğinde tarafından işleneceğini veya bir işleyici isteği işlemesi belirlemek için kullanın.
    • UpdateRequestCache: Bu olay, bir yanıt işleyicinin sonra Call. Modüller önbellekleme önbelleğe yanıt ile güncelleştirmeniz gerekir.
    Bu örnek, BeginRequest olay kullanır.
  7. ınit ve atmaıhttpmodule arabirim yöntemleri gibi uygulamak:
    public void Init(HttpApplication app)
    {
       app.BeginRequest += new EventHandler(OnBeginRequest);
    }
    
    public void Dispose(){ }					
  8. Olay bir temsilci gibi oluşturma:
    public delegate void MyEventHandler(Object s, EventArgs e);					
  9. Olay başvurusu tutulacağı MyEventHandler türünde özel bir yerel değişken tanımlayın:
    private MyEventHandler _eventHandler = null;					
  10. Global.asax dosyasına veya HttpApplication nesneden devralan bir sınıf yöntemi temsilciye kurmak için kanca oluşturur, olay oluşturma:
    public event MyEventHandler MyEvent
    {
       add { _eventHandler += value; }
       remove { _eventHandler -= value; }
    }					
  11. HttpApplication <a1>BeginRequest</a1> olayı için kanca oluşturur OnBeginRequest yöntemi oluştur:
    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. Projeyi derleyin.

Modül dağıtma

  1. Modül adı c:\ınetpub\wwwroot altında yeni bir dizin oluşturun.
  2. Depo gözü yeni oluşturulan modülü dizininde adlı alt dizine oluşturun. Sonuç yolu C:\Inetpub\Wwwroot\Module\Bin dizinidir.
  3. MyModule.dll, projenizin Bin\Debug dizininden C:\Inetpub\Wwwroot\Module\Bin dizinine kopyalayın.
  4. Yeni bir modül dizin bir Web uygulaması olarak işaretlemek için şu adımları izleyin:
    1. Internet Services Manager'ı açın.
    2. Modül dizinini sağ tıklatın ve sonra da Properties ' i tıklatın.
    3. Dizin sekmesinde, Oluştur ' u tıklatın.
    4. Modül özellikler iletişim kutusunu kapatmak için Tamam ' ı tıklatın.

Sistem yapılandırma

  1. C:\Inetpub\Wwwroot\Module\ dizininde Web.config adlı yeni bir dosya oluşturun.
  2. Web.config içinde aşağıdaki metni yapıştırın:
    <configuration>
       <system.web>
          <httpModules>
             <add name="MyModule" type="MyModule.SyncModule, MyModule" />
          </httpModules>
       </system.web>
    </configuration>					

Modül sınayın.

  1. C:\Inetpub\Wwwroot\Module dizinde Test.aspx adlı yeni bir .aspx dosyası oluşturun.
  2. Aşağıdaki metni Test.aspx:
    <%@Page Language="C#"%>
    <% Response.Write("Hello from Test.aspx.<br>"); %>					
  3. C:\Inetpub\Wwwroot\Module dizindeki bir Global.asax dosyasına oluşturun.
  4. Aşağıdaki kodu 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. Test.aspx sayfa isteyin. Aşağıdaki metin satırlarını görmelisiniz:
    Hello from OnBeginRequest in custom module.
    Hello from MyModule_OnMyEvent called in Global.asax.
    Hello from Test.aspx.					

Referanslar

HttpHandlers hakkında ek bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
307985  (http://support.microsoft.com/kb/307985/EN-US/ ) BILGI: ASP.NET HTTP modülleri ve HTTP işleyicileri genel bakış


Bu makaledeki bilginin uygulandığı durum:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
Anahtar Kelimeler: 
kbmt kbconfig kbhowtomaster kbhttpmodule kbhttpruntime kbweb KB307996 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:307996  (http://support.microsoft.com/kb/307996/en-us/ )