ASP.NET 2.0では、healthMonitoring属性を使用してイベントを監視できます。 healthMonitoring 属性は、独自のプロバイダーを構築できるメソッドベースのプロバイダーです。 healthMonitoring 属性を使用すると、イベント ログ、SQL Server などのさまざまなデータ ソースのエラー、成功したイベントなどを記録したり、WebEventProvider クラスを継承して独自のプロバイダーを作成したりできます。この記事では、SqlServer エラーを検出し、誰かの電子メール アドレスに電子メールを送信する Web アプリケーションの構成について説明します。まず、web.config 内の healthMonitoring プログラム フラグメントを確認します。ここで、使用するイベントを作成できます。
<healthMonitoring Enabled="true|false" heartBeatInterval="time interval"> <bufferModes>... </bufferModes> <providers>... </providers> <eventMappings>... </eventMappings> <profiles>... </profiles> <rules>... </rules> </healthMonitoring>
bufferModes、ここでProviderのバッファサイズを定義できます。
プロバイダー、イベントを処理するプロバイダーは次のとおりです。
EventMappings、ここではフレンドリーなイベントタイプに関連するイベント名を描画できます。
プロファイル、ここではイベントの設定に使用できるパラメータセットのコレクションを定義します。
ルール、ここにプロバイダーのイベント図を描きます。
これらの要素の詳細については、VS 2550 のドキュメントを参照してください。
続行する前に、ASP.NET のいくつかのプロバイダーのリストを以下に示します。
System.Web.Management.MailWebEventProvider System.Web.Management.SimpleMailWebEventProvider System.Web.Management.TemplatedMailWebEventProvider System.Web.Management.TraceWebEventProvider System.Web.Management.EventLogWebEventProvider System.Web.Management.SqlWebEventProvider System.Web.Management.WmiWebEventProvider
これらについて説明する必要はありません。名前を見れば、その機能がわかります。また、SqlWebEventProvider は SQL サーバーに依存して動作し、イベントを aspnet_Web_Event テーブルに保存することにも言及します。このデータベースを インストールするには、フレームワーク フォルダーにある aspnet_regsql.exe ウィザードを実行する必要があります。
次に、SQLサーバープロバイダーへのログインエラーがあり、メール送信時にエラーを生成するプログラムを設定します。
以下は、SqlWebEventProvider と SimpleMailWebEventProvider を使用してスペルミスのイベントを保存する例です。
<healthMonitoring enabled="true" heartBeatInterval="0"><bufferModes><add name="Critical Notification" maxBufferSize="100" maxFlushSize="20"urgentFlushThreshold="1" regularFlushInterval="Infinite" urgentFlushInterval="00:01:00" maxBufferThreads="1"/> <add name="Analysis" maxBufferSize="1000" maxFlushSize="100" urgentFlushThreshold="100"regularFlushInterval="00:05:00" urgentFlushInterval="00:01:00" maxBufferThreads="1"/> </bufferModes><providers> <add name="CriticalMailEventProvider" type="System.Web.Management.SimpleMailWebEventProvider, System.Web ..." from=info@nsquared2.net to=fnormen@hotmail.com priority="High" bodyHeader="Warning!"bodyFooter="Please investigate ASAP." subjectPrefix="Action required." buffer="true" bufferMode="Critical Notification" maxEventLength="4096" maxSize="4096" maxMessagesPerNotification="1"/> <add name="SqlWebEventProvider" type="System.Web.Management.SqlWebEventProvider, System.Web ..."connectionStringName="LocalSqlServer" maxEventDetailsLength="1073741823" buffer="true"bufferMode="Analysis"/> </providers> <eventMappings> <add name="All Errors" type="System.Web.Management.WebBaseErrorEvent, System.Web ..."/><add name="Request Processing Errors" type="System.Web.Management.WebRequestErrorEvent, System.Web .../> </eventMappings> <profiles> <add name="Default" minInstances="1" maxLimit="Infinite" minInterval="00:10:00"/> </profiles> <rules> <add name="All Errors Default" eventName="All Errors" provider="SqlWebEventProvider" profile="Default"minInterval="00:00:30"/> <add name="Request Processing Errors" eventName="Request Processing Errors" provider="CriticalMailEventProvider" profile="Default"/> </rules> </healthMonitoring>
この例では、SQL プロバイダーを使用してすべてのエラー イベントをログに記録し、メール プロバイダーを使用して Web リクエストのエラー イベントが起きたときにメッセージを送信します。
ASP .NET 2.0 でリリースされたいくつかのイベントを次に示します:
System.Web.Management.WebBaseEvent System.Web.Management.WebHeartBeatEvent System.Web.Management.WebApplicationLifetimeEvent System.Web.Management.WebRequestEvent System.Web.Management.WebBaseErrorEvent System.Web.Management.WebErrorEvent System.Web.Management.WebRequestErrorEvent System.Web.Management.WebAuditEvent System.Web.Management.WebFailureAuditEvent System.Web.Management.WebSuccessAuditEvent System.Web.Management.WebManagementEvent System.Web.Management.WebViewStateFailureAuditEvent System.Web.Management.WebAuthenticationFailureAuditEvent System.Web.Management.WebAuthenticationSuccessAuditEvent
これらのイベントを使用してプロバイダーの画像を描画できます。 WebBaseEvent クラスから継承した独自のイベントを作成することもできます。
イベントを自動的に起動するには、WebBaseEvent クラスの wakeup メソッドを使用できます:
try { //.... }
catch(Exception e){ if (HealthMonitoringManager.Enabled) { WebBaseEvent.Raise(new WebErrorEvent("My Error message", null, 5000, e)); }} or: if (HealthMonitoringManager.Enabled){ WebErrorEvent event = new WebErrorEvent("My error message", null, 5000, e); event.Raise();}
以上がASP.NET で healthMonitor 属性を使用する方法のチュートリアルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。