Итак, каким образом модуль HTTP самостоятельно включается в конвейер обработки запросов ASP.NET? Он делает это подобно файлу global.asax. По сути, когда создается модуль HTTP, он регистрируется для получения специфических глобальных событий приложения. Например, если модуль связан с аутентификацией, он зарегистрирует сам себя для получения событий аутентификации. Каждый раз при возникновении этих событий ASP.NET вызывает интересующие модули HTTP. Модуль HTTP инициирует свои события с помощью кода делегата в методе Init().

Интерфейс IHttpModule определяет два метода, которые показаны в табл. 5.5.

Таблица 5.5. Члены IHttpModule

Член Описание
Init() Этот метод позволяет модулю HTTP зарегистрировать свои обработчики событий для получения событий объекта HttpApplication. Этот метод предлагает текущий объект HttpApplication для запроса в качестве параметра.

Dispose() Этот метод дает модулю HTTP возможность выполнять любую очистку до того, как объект будет удален сборщиком мусора.

Следующий класс является специальным модулем HTTP, который обрабатывает событие HttpApplication.AuthenticateRequest, а затем регистрирует информацию пользователя в новой записи журнала событий Windows с помощью класса EventLog из пространства имен System.Diagnostics. Чтобы использовать этот пример, учетная запись, применяемая для запуска кода ASP.NET, должна иметь разрешение на запись в журнал событий.

using System;
using System.Web;
using System.Diagnostics;

namespace HttpExtensions
{
  public class LogUserModule : IHttpModule
  {
    public void Init(HttpApplication httpApp)
    {
      // Attach application event handlers.
      httpApp.AuthenticateRequest += new EventHandler(OnAuthentication);
    }
    private void OnAuthentication(object sender, EventArgs a)
    {
      // Get the current user identity.
      string name = HttpContext.Current.User.Identity.Name;
      // Log the user name.
      EventLog log = new EventLog();
      log.Source = "Log User Module";
      log.WriteEntry(name + " was authenticated.");
    }

предыдущая    следующая страница   оглавление

250

Hosted by uCoz