ホームページ >バックエンド開発 >C#.Net チュートリアル >ASP.NET で healthMonitor 属性を使用する方法のチュートリアル

ASP.NET で healthMonitor 属性を使用する方法のチュートリアル

零下一度
零下一度オリジナル
2017-07-03 17:11:282441ブラウズ

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>

d8aea2075158d792937a399d255d2e1d 要素を確認すると、属性を有効または無効に設定できるかどうかを判断でき、WebHeaderBeatEvent が起動される時間間隔も指定できます。 healthMonitoring には 5 人の子供がいます。

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。