HTTP modüllerini ve HTTP işleyicilerini ASP.NET

Bu makalede, ASP.NET Köprü Metni Aktarım Protokolü (HTTP) modülleri ve HTTP işleyicileri tanıtılıyor.

Orijinal ürün sürümü: ASP.NET
Özgün KB numarası: 307985

Özet

HTTP modülleri ve HTTP işleyicileri, ASP.NET mimarisinin ayrılmaz bir parçasıdır. bir istek işlenirken, her istek birden çok HTTP modülü (örneğin, kimlik doğrulama modülü ve oturum modülü) tarafından işlenir ve ardından tek bir HTTP işleyicisi tarafından işlenir. İşleyici isteği işledikten sonra istek HTTP modülleri üzerinden geri akar.

HTTP modüllerine genel bakış

İşleyici yürütülmeden önce ve sonra modüller çağrılır. Modüller, geliştiricilerin her isteği tek tek kesmesine, isteklerine katılmasına veya bunları değiştirmesine olanak tanır. Modüller, ad alanında bulunan arabirimini System.Web uygularIHttpModule.

HTTP modüllerinin eşitleyebileceği kullanılabilir olaylar

Sınıf HttpApplication , modüllerin eşitlenebileceği bir dizi olay sağlar. Her istekte ile eşitlenecek modüller için aşağıdaki olaylar kullanılabilir. Bu olaylar sıralı sırada listelenir:

  • BeginRequest: İstek başlatıldı. İsteğin başında bir şey yapmanız gerekiyorsa (örneğin, her sayfanın üst kısmında reklam başlıkları görüntüleyin), bu olayı eşitleyin.

  • AuthenticateRequest: Kendi özel kimlik doğrulama düzeninizi takmak istiyorsanız (örneğin, parolayı doğrulamak için bir kullanıcıyı veritabanına karşı arayın), bu olayı eşitleyen ve kullanıcının kimliğini istediğiniz gibi doğrulayan bir modül oluşturun.

  • AuthorizeRequest: Bu olay, yetkilendirme mekanizmalarını (örneğin, erişim denetim listelerinizi (ACL'ler) dosya sistemi yerine bir veritabanında depolamak için dahili olarak kullanılır. Bu olayı geçersiz kılabilirsiniz ancak bunu yapmak için pek iyi bir neden yoktur.

  • ResolveRequestCache: Bu olay, bir sayfanın Çıkış önbelleğinden sunulup sunulmayabileceğini belirler. Kendi önbelleğe alma modülünüzü yazmak istiyorsanız (örneğin, bellek önbelleği yerine dosya tabanlı bir önbellek oluşturun), sayfaya önbellekten hizmet verilip verilmeyeceğini belirlemek için bu olayı eşitleyin.

  • AcquireRequestState: Oturum durumu, durum deposundan alınır. Kendi durum yönetimi modülünüzü oluşturmak istiyorsanız, durum deponuzdan oturum durumunu almak için bu olayı eşitleyin.

  • PreRequestHandlerExecute: Bu olay HTTP işleyicisi yürütülmeden önce gerçekleşir.

  • PostRequestHandlerExecute: Bu olay HTTP işleyicisi yürütüldükten sonra gerçekleşir.

  • ReleaseRequestState: Oturum durumu, durum deposunda yeniden depolanır. Özel bir oturum durumu modülü oluşturuyorsanız durumunuzu tekrar durum deponuzda depolamanız gerekir.

  • UpdateRequestCache: Bu olay çıktıyı Çıkış önbelleğine geri yazar. Özel bir önbellek modülü oluşturuyorsanız çıktıyı önbelleğinize geri yazarsınız.

  • EndRequest: İstek tamamlandı. İstek boyunca bilgi toplayan ve ardından bilgileri sayfaya yazan bir hata ayıklama modülü oluşturmak isteyebilirsiniz.

Her istek iletimi için modüllerin ile eşitlenmesi için aşağıdaki olaylar kullanılabilir. Bu olayların sırası belirleyici değildir.

  • PreSendRequestHeaders: Bu olay üst bilgiler gönderilmeden önce gerçekleşir. Ek üst bilgiler eklemek istiyorsanız, bu olayı özel bir modülden eşitleyebilirsiniz.

  • PreSendRequestContent: Yöntemi çağrıldığında Response.Flush bu olay oluşur. Ek içerik eklemek istiyorsanız, bu olayı özel bir modülden eşitleyebilirsiniz.

  • Error: İşlenmeyen bir özel durum oluştuğunda bu olay oluşur. Özel bir hata işleyici modülü yazmak istiyorsanız, bu olayı eşitleyin.

HTTP modüllerini yapılandırma

Yapılandırma <httpModules> bölümü işleyicisi, bir uygulama içindeki HTTP modüllerini yapılandırmakla sorumludur. Bilgisayar, site veya uygulama düzeyinde bildirilebilir. Bölüm işleyicisi için aşağıdaki söz dizimini <httpModules> kullanın:

<httpModules>
    <add type="[COM+ Class], [Assembly]" name="[ModuleName]" />
    <remove type="[COM+ Class], [Assembly]" name="[ModuleName]" />
    <clear />
</httpModules>

HTTP modülleri oluşturma

HTTP modülü oluşturmak için arabirimini IHttpModule uygulamanız gerekir. Arabirimin IHttpModule aşağıdaki imzalara sahip iki yöntemi vardır:

void Init(HttpApplication);
void Dispose();

HTTP işleyicilerine genel bakış

İşleyiciler, tek tek uç nokta isteklerini işlemek için kullanılır. İşleyiciler, ASP.NET çerçevesinin bir uygulama içindeki tek tek HTTP URL'lerini veya URL uzantı gruplarını işlemesini sağlar. Modüllerden farklı olarak, bir isteği işlemek için yalnızca bir işleyici kullanılır. Tüm işleyiciler içinde bulunan arabirimini System.Web namespaceuygularIHttpHandler. İşleyiciler, Internet Server Uygulama Programlama Arabirimi (ISAPI) uzantılarına benzer.

HTTP işleyicilerini yapılandırma

Yapılandırma <httpHandlers> bölümü işleyicisi, gelen URL'leri veya IHttpHandlerFactory sınıfına eşlemek IHttpHandler için sorumludur. Bilgisayar, site veya uygulama düzeyinde bildirilebilir. Alt dizinler bu ayarları devralır.

Yöneticiler, bölümü yapılandırmak için etiket yönergesini <httpHandlers> kullanır<add>. <Add> yönergeleri yukarıdan aşağıya sıralı olarak yorumlanır ve işlenir. Bölüm işleyicisi için aşağıdaki söz dizimini <httpHandler> kullanın:

<httpHandlers>
    <add verb="[verb list]" path="[path/wildcard]" type="[COM+ Class], [Assembly]" validate="[true/false]" />
    <remove verb="[verb list]" path="[path/wildcard]" />
    <clear />
</httpHandlers>

HTTP işleyicileri oluşturma

HTTP işleyicisi oluşturmak için arabirimini IHttpHandler uygulamanız gerekir. Arabirimin IHttpHandler bir yöntemi ve aşağıdaki imzalara sahip bir özelliği vardır:

void ProcessRequest(HttpContext);
bool IsReusable {get;}

Not

HTTP işleyicinizde oturum durumu gerekiyorsa arabirimini de uygulamanız IRequiresSessionState gerekir.