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ığındaResponse.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 namespace
uygularIHttpHandler
. İş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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin