Практическое руководство. Реализация и вызов пользовательских событий мониторинга состояния ASP.NET
Обновлен: Ноябрь 2007
В примере данного раздела показано, как вызывать пользовательские события мониторинга состояния ASP.NET. При добавлении пользовательского события в приложение необходимо учесть следующие моменты:
Способ настройки области для события мониторинга состояния. Если предполагается вызывать данное событие во всех приложениях на сервере, необходимо настроить область события на уровне компьютера. Предпочтительный способ сделать это — создать HTTP-модуль, в котором реализован вызов пользовательского события, как показано в данном примере. Затем следует установить модуль на уровне компьютера. Модуль вызывается во всех приложениях на компьютере, на котором этот модуль установлен.
Время вызова события мониторинга состояния. Можно вызвать события мониторинга состояния в любой момент во время обработки запроса. Обычно точки времени вызова пользовательского события WebRequestEvent находятся в пределах системного события BeginRequest или события EndRequest.
В данном примере показаны следующие функции:
построение HTTP-модуля для вызова пользовательских событий мониторинга состояния;
настройка приложения на запись в журнал событий с помощью стандарта EventLogWebEventProvider;
ведение журнала событий с помощью стандарта EventLogWebEventProvider.
Для выполнения примера кода понадобится следующее:
IIS, установленный на сервере, на котором выполняется веб-приложение. Дополнительные сведения см. в разделе Практическое руководство. Создание и настройка виртуальных каталогов в IIS 5.0 и 6.0 или выполните поиск "Internet Information Services" на веб-узле https://www.microsoft.com.
Веб-приложение ASP.NET. Дополнительные сведения см. в разделе Макет веб-узла ASP.NET.
Код из раздела Пример создания пользовательских событий ASP.NET, следящих за работоспособностью.
Построение HTTP-модуля
Поместите исходный код из раздела Пример создания пользовательских событий ASP.NET, следящих за работоспособностью в каталог приложения ASP.NET App_Code в файл SampleModule.vb или SampleModule.cs.
Примечание. Если в каталоге приложения App_Code уже имеется исходный код, необходимо добавить версию пользовательского поставщика событий, который написан на том же языке, что и существующий код в каталоге.
Компиляция кода пользовательского поставщика событий будет выполнена ASP.NET при запросе страницы приложения. Дополнительные сведения см. в разделе Общие папки кода на веб-узлах 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\versionNumber".
Настройка приложения ASP.NET для использования данного примера
Если файл существует в корневой папке приложения ASP.NET, откройте его. В противном случае создайте файл Web.config и скопируйте в него следующий текст:
<?xml version="1.0"?> <configuration xmlns="https://schemas.microsoft.com/.NetConfiguration/v2.0"> <system.web> </system.web> </configuration>
В теги system.web добавьте элементы httpModules и Элемент healthMonitoring (схема параметров ASP.NET).
<httpModules> <add name="Raising Custom Web Events" type="Samples.AspNet.Management.CustomWebEvents" /> </httpModules> <healthMonitoring heartbeatInterval="0" enabled="true"> <eventMappings> <add name="SampleWebRequestEvent" type="Samples.AspNet.Management.SampleWebRequestEvent" /> </eventMappings> <profiles> <add name="Custom" minInstances="1" maxLimit="Infinite" minInterval="00:00:00" /> </profiles> <rules> <clear /> <add name="Custom Web Request Event" eventName="SampleWebRequestEvent" provider="EventLogProvider" profile="Custom" /> </rules> </healthMonitoring>
С помощью атрибута type могут быть перечислены имена классов, как это реализовано в предыдущем примере, или могут быть перечислены полностью определенные типы, как в следующем примере:
type="Samples.AspNet.Management.SampleWebRequestEvent, Sample.SampleModule,Version=1.0.0.0,Culture=neutral, PublicKeyToken=xxxxxxxxxxxx"
Примечание. Полный определенный тип необходим, только если класс установлен в глобальный кэш сборок GAC в каталоге Bin.
Тестирование пользовательского веб-события
Откройте окно просмотра событий Windows на сервере, на котором выполняется веб-приложение. Чтобы сделать это, нажмите кнопку Пуск, выберите команду Выполнить, введите eventvwr в диалоговом окне Выполнить, затем нажмите кнопку ОК.
В дереве просмотра журнала событий узла "Просмотр событий" щелкните пункт Приложение.
Обновите представление журнала приложения, щелкнув пункт Действие, затем пункт Обновить.
Зафиксируйте дату, время и имя самых последних событий. Эти данные будет необходимо использовать далее, чтобы убедиться в том, что пользовательское событие вызвано.
В веб-обозревателе запросите любую страницу веб-приложения.
Чтобы использовать пользовательское событие в приложении, выполните страницу из приложения в веб-обозревателе. Затем изучите результаты, созданные с помощью пользовательского события.
Обновите журнал приложения еще раз и проверьте, что сведения о событиях состояния, выданные пользовательским событием, внесены в журнал.
См. также
Задачи
Пример создания пользовательских событий ASP.NET, следящих за работоспособностью
Основные понятия
Общие сведения о мониторинге работоспособности системы ASP.NET
Ссылки
Элемент healthMonitoring (схема параметров ASP.NET)