Поделиться через


Практическое руководство. Пример реализации пользовательского поставщика для наблюдения за состоянием системы

Обновлен: Ноябрь 2007

Пример, приведенный в разделе Пример пользовательских поставщиков наблюдения за работоспособностью ASP.NET, иллюстрирует создание пользовательского поставщика для обработки событий работоспособности ASP.NET. В примере кода показано, как с помощью класса, производного от класса BufferedWebEventProvider, создать пользовательский поставщик для записи сведений о событиях в локальный файл.

Здесь намеренно приведен очень простой пример. Это сделано для того, чтобы предоставить вам полный контроль над базовыми механизмами пользовательского поставщика. В реальном приложении код примера можно использовать для предварительного тестирования поведения приложения, чтобы понять сведения, предоставляемые средствами наблюдения за состоянием системы ASP.NET.

Ниже перечислены возможности, демонстрируемые в примере поставщика.

  • Создание пользовательского поставщика путем наследования от класса BufferedWebEventProvider. Этот поставщик позволяет хранить сведения о событиях на основе различных факторов (например для указанного промежутка времени) перед тем, как записать эти сведения в журнал.

  • Настройка пользовательского поставщика.

  • Взаимодействие со средством просмотра событий Windows.

Чтобы выполнить код, приведенный в данном примере, необходимо следующее:

Создание пользовательского поставщика событий

  • Скомпилируйте пользовательский поставщик событий как библиотеку и поместите библиотеку в каталог "Bin" приложения ASP.NET или присвойте сборке уникальное имя и помесите эту сборку в глобальный кэш сборок (GAC).

    В следующем примере команды показано, как можно компилировать код данного примера с помощью компилятора командной строки.

    vbc /out:<example_name>.dll /t:library <example_name>.vb /r:System.Web.dll /r:System.Configuration.dll /r:<required namespace>
    
    csc /out:<example_name>.dll /t:library <example_name>.cs /r:System.Web.dll /r:System.Configuration.dll  /r:<required namespace>
    
    ms178718.alert_note(ru-ru,VS.90).gifПримечание.

    При невозможности выполнить команду компилятора перед запуском команды необходимо добавить путь установки платформы .NET Framework в переменную среды Windows PATH. В Windows щелкните правой кнопкой мыши элемент Мой компьютер, щелкните пункт Свойства, перейдите на вкладку Дополнительно, а затем нажмите кнопку Переменные среды. В списке Системные переменные дважды щелкните переменную Path. В поле Значение переменной добавьте точку с запятой (;) в конец существующих значений текстового поля и введите путь установки платформы .NET Framework. Обычно платформа .NET Framework устанавливается в папку установки Windows в \Microsoft.NET\Framework\номер_версии.

Настройка приложения на использование данного примера

  1. Если в корневой папке приложения уже содержится файл Web.config, откройте его. В противном случае создайте файл с именем Web.config и добавьте в него указанный ниже текст.

    <?xml version="1.0"?>
    <configuration xmlns="https://schemas.microsoft.com/.NetConfiguration/v2.0">
      <system.web>
      </system.web>
    </configuration>
    
  2. Добавьте в теги system.web указанный ниже элемент healthMonitoring.

    <healthMonitoring
        heartBeatInterval="0" enabled="true">
      <bufferModes>
        <add name="Custom Notification"
          maxBufferSize="10"
          maxFlushSize="5"
          urgentFlushThreshold="2"
          regularFlushInterval="Infinite"
          urgentFlushInterval="00:00:30"
        />
      </bufferModes>
      <providers>
        <add name="SampleEventProvider" type="Samples.AspNet.Management.SampleBufferedEventProvider" 
        buffer="true"
        bufferMode="Custom Notification" />
      </providers>
      <profiles>
        <add name="Custom"
          minInstances="1"
          maxLimit="Infinite"
          minInterval="00:00:00" />
      </profiles>
      <rules>
        <add name="Custom Event Provider"
          eventName="All Events"
          provider="SampleEventProvider"
          profile="Custom" />
      </rules>
    </healthMonitoring>
    

    В параметрах элемента healthMonitoring для добавления пользовательского поставщика и указания элемента profiles, который (в данном случае) защищает сервер путем ограничения количества вызовов события, используется элемент providers. В данный пример также включен элемент rules для связи события с профилем и поставщиком.

    Атрибут type может содержать только имя класса, как в предыдущем примере кода, либо полное имя типа, как в приведенном ниже примере.

    type="Samples.AspNet.Management.SampleWebRequestEvent,
    Sample.SampleCustomEventProvider,Version=1.0.0.0,Culture=neutral, 
    PublicKeyToken=xxxxxxxxxxxx"
    
    ms178718.alert_note(ru-ru,VS.90).gifПримечание.

    Полное имя типа необходимо только в том случае, если класс установлен в глобальный кэш сборок GAC в каталоге "Bin".

Тестирование пользовательского веб-события

  1. В веб-обозревателе запросите любую страницу веб-приложения.

    Запуск любой страницы приложения приводит к вызову пользовательского события.

  2. Чтобы просмотреть данные пользовательского события, откройте файл журнала, указанный в коде в переменной logFilePath.

См. также

Основные понятия

Пример пользовательских поставщиков наблюдения за работоспособностью ASP.NET

Общие сведения о мониторинге работоспособности системы ASP.NET

Ссылки

Элемент healthMonitoring (схема параметров ASP.NET)

EventLogWebEventProvider

Другие ресурсы

Создание веб-узлов ASP.NET