Share via


方法 : 状態監視のカスタム プロバイダの例を実装する

更新 : 2007 年 11 月

カスタムの ASP.NET Health Monitoring プロバイダの例」の例では、ASP.NET 状態イベントを処理するカスタム プロバイダを作成する方法を示します。そのコード例では、BufferedWebEventProvider クラスから派生してイベント情報をローカル ファイルに記述するカスタム プロバイダを作成する方法を示します。

この例は、故意に簡略化されています。その理由は、カスタム プロバイダの基本的なメカニズムを完全に制御できるようにすることです。実際のシナリオでは、この例のコードをアプリケーションの動作の予備プローブとして使用し、ASP.NET Health Monitoring が提供する情報を理解する助けになります。

このサンプル プロバイダでは、次の機能を示します。

  • BufferedWebEventProvider から継承してカスタム プロバイダを構築します。このプロバイダは、ログを記録する前に各種の要素 (指定された間隔など) に基づいたイベント情報を保持できます。

  • カスタム プロバイダを構成します。

  • Windows イベント ビューアにインターフェイスします。

この例を実行するには、次の項目が必要です。

カスタム イベント プロバイダを構築するには

  • カスタムのイベント プロバイダをライブラリとしてコンパイルして ASP.NET アプリケーションの Bin ディレクトリに保存するか、アセンブリの名前を厳密に指定してグローバル アセンブリ キャッシュ (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(ja-jp,VS.90).gifメモ :

    コンパイラ コマンドを実行できない場合は、コマンドを実行する前に .NET Framework のインストール パスを Windows の PATH 変数に追加する必要があります。Windows で、[マイ コンピュータ] アイコンを右クリックし、[プロパティ] をクリックします。次に、[詳細設定] タブで、[環境変数] をクリックします。[システム環境変数] の一覧の Path 変数をダブルクリックします。[変数値] ボックスで、既存の値の最後にセミコロン (;) を追加し、各自の .NET Framework のインストール パスを入力します。通常の場合、.NET Framework は Windows のインストール フォルダ (\Microsoft.NET\Framework\versionNumber) にインストールされます。

アプリケーションを構成してこの例を使用するには

  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 要素の設定は providers 要素を使用してカスタム プロバイダを追加し、(この場合は) イベントの発生回数を制限することによってサーバーを保護する profiles 要素を指定します。この例には、イベントをプロファイルとプロバイダに関連付けるための rules 要素も含まれます。

    type 属性には、前のコード例のようにクラス名だけを記述することも、次の例のように完全修飾された型を記述することもできます。

    type="Samples.AspNet.Management.SampleWebRequestEvent,
    Sample.SampleCustomEventProvider,Version=1.0.0.0,Culture=neutral, 
    PublicKeyToken=xxxxxxxxxxxx"
    
    ms178718.alert_note(ja-jp,VS.90).gifメモ :

    完全修飾された型は、クラスを GAC または Bin ディレクトリにインストールする場合のみ必要です。

カスタムの Web イベントをテストするには

  1. ブラウザで、Web アプリケーションから任意のページを要求します。

    アプリケーションで任意のページを実行するとカスタム イベントが発生します。

  2. カスタム イベント データを表示するには、コードの logFilePath 変数に指定されているログ ファイルを開きます。

参照

概念

カスタムの ASP.NET Health Monitoring プロバイダの例

ASP.NET Health Monitoring の概要

参照

healthMonitoring 要素 (ASP.NET 設定スキーマ)

EventLogWebEventProvider

その他の技術情報

ASP.NET Web サイトの作成