Практическое руководство. Пример реализации пользовательского поставщика для наблюдения за состоянием системы
Обновлен: Ноябрь 2007
Пример, приведенный в разделе Пример пользовательских поставщиков наблюдения за работоспособностью ASP.NET, иллюстрирует создание пользовательского поставщика для обработки событий работоспособности ASP.NET. В примере кода показано, как с помощью класса, производного от класса BufferedWebEventProvider, создать пользовательский поставщик для записи сведений о событиях в локальный файл.
Здесь намеренно приведен очень простой пример. Это сделано для того, чтобы предоставить вам полный контроль над базовыми механизмами пользовательского поставщика. В реальном приложении код примера можно использовать для предварительного тестирования поведения приложения, чтобы понять сведения, предоставляемые средствами наблюдения за состоянием системы ASP.NET.
Ниже перечислены возможности, демонстрируемые в примере поставщика.
Создание пользовательского поставщика путем наследования от класса BufferedWebEventProvider. Этот поставщик позволяет хранить сведения о событиях на основе различных факторов (например для указанного промежутка времени) перед тем, как записать эти сведения в журнал.
Настройка пользовательского поставщика.
Взаимодействие со средством просмотра событий Windows.
Чтобы выполнить код, приведенный в данном примере, необходимо следующее:
Службы IIS (Internet Information Services) установленные на сервере, на котором выполняется веб-приложение. Дополнительные сведения см. в разделе Практическое руководство. Создание и настройка виртуальных каталогов в IIS 5.0 и 6.0 или выполните поиск по словам "Internet Information Services" на веб-узле https://www.microsoft.com/ru/ru/default.aspx.
Веб-приложение ASP.NET.
Создание пользовательского поставщика событий
Скомпилируйте пользовательский поставщик событий как библиотеку и поместите библиотеку в каталог "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>
Примечание.
При невозможности выполнить команду компилятора перед запуском команды необходимо добавить путь установки платформы .NET Framework в переменную среды Windows PATH. В Windows щелкните правой кнопкой мыши элемент Мой компьютер, щелкните пункт Свойства, перейдите на вкладку Дополнительно, а затем нажмите кнопку Переменные среды. В списке Системные переменные дважды щелкните переменную Path. В поле Значение переменной добавьте точку с запятой (;) в конец существующих значений текстового поля и введите путь установки платформы .NET Framework. Обычно платформа .NET Framework устанавливается в папку установки Windows в \Microsoft.NET\Framework\номер_версии.
Настройка приложения на использование данного примера
Если в корневой папке приложения уже содержится файл Web.config, откройте его. В противном случае создайте файл с именем Web.config и добавьте в него указанный ниже текст.
<?xml version="1.0"?> <configuration xmlns="https://schemas.microsoft.com/.NetConfiguration/v2.0"> <system.web> </system.web> </configuration>
Добавьте в теги 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"
Примечание.
Полное имя типа необходимо только в том случае, если класс установлен в глобальный кэш сборок GAC в каталоге "Bin".
Тестирование пользовательского веб-события
В веб-обозревателе запросите любую страницу веб-приложения.
Запуск любой страницы приложения приводит к вызову пользовательского события.
Чтобы просмотреть данные пользовательского события, откройте файл журнала, указанный в коде в переменной logFilePath.
См. также
Основные понятия
Пример пользовательских поставщиков наблюдения за работоспособностью ASP.NET
Общие сведения о мониторинге работоспособности системы ASP.NET
Ссылки
Элемент healthMonitoring (схема параметров ASP.NET)