次の方法で共有


方法 : カスタムの ASP.NET Health Monitoring イベントの実装と発生

更新 : 2007 年 11 月

このセクションの例では、ASP.NET のカスタム状態監視イベントを発生させる方法を示します。アプリケーションにカスタム イベントを追加するときは、次の点を考慮する必要があります。

  • 状態監視イベントのスコープを設定する方法。サーバーのすべてのアプリケーションで発生させるイベントは、マシン全体のスコープで構成する必要があります。そのためには、この例のように、カスタム イベントを発生する HTTP モジュールを作成する方法をお勧めします。次に、モジュールをマシン レベルでインストールします。このモジュールは、インストールされているコンピュータのすべてのアプリケーションで呼び出されます。

  • 状態監視イベントを発生させる時期状態監視イベントは、要求の処理中の任意の時点で発生できます。カスタムの WebRequestEvent を発生させる一般的な時期は、システム BeginRequest イベントまたは EndRequest イベントの中です。

この例には、次のような機能が含まれます。

  • HTTP モジュールを構築してカスタムの状態監視イベントを発生させる。

  • 標準の EventLogWebEventProvider を使用してイベントをログに記録するようにアプリケーションを構成する。

  • 標準の EventLogWebEventProvider を使用してイベント情報をログに記録する。

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

HTTP モジュールを構築するには

  • カスタムの ASP.NET Health Monitoring イベント生成の例 からソース コードを取得して SampleModule.vb または SampleModule.cs という名前のファイルで ASP.NET アプリケーションの App_Code ディレクトリに保存します。

    ms227980.alert_note(ja-jp,VS.90).gifメモ :

    アプリケーションの App_Code ディレクトリに既にソース コードがある場合は、ディレクトリ内の既存のコードと同じ言語で記述されたカスタム イベント プロバイダのバージョンを追加する必要があります。

    ASP.NET は、アプリケーションのページが要求されたときにカスタムのイベント プロバイダのコードをコンパイルします。詳細については、「ASP.NET Web サイト内の共有コード フォルダ」を参照してください。

    または

  • カスタムのイベント プロバイダをライブラリとしてコンパイルして 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>
    
    ms227980.alert_note(ja-jp,VS.90).gifメモ :

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

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

  1. Web.config ファイルが ASP.NET アプリケーションのルート フォルダに既に存在する場合は、それを開きます。存在しない場合、Web.config というテキスト ファイルを作成して次のテキストをコピーします。

    <?xml version="1.0"?>
    <configuration xmlns="https://schemas.microsoft.com/.NetConfiguration/v2.0">
      <system.web>
      </system.web>
    </configuration>
    
  2. 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"
    
    ms227980.alert_note(ja-jp,VS.90).gifメモ :

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

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

  1. Web アプリケーションを実行するサーバーで Windows イベント ビューアを実行します。そのためには、[スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックし、[ファイル名を指定して実行] ダイアログ ボックスで「eventvwr」と入力して [OK] をクリックします。

  2. イベント ビューアのイベント ログ ツリーで [アプリケーション] をクリックします。

  3. [操作] をクリックし、[最新の情報に更新] をクリックして、アプリケーション ログのビューを更新します。

    最新のイベントの日時と名前を記録します。この情報は、カスタム イベントが発生したかどうかを確認するために後で使用します。

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

    アプリケーションでカスタム イベントを使用するには、ブラウザでアプリケーションからページを実行します。次に、カスタム イベントが生成する結果を調べます。

  5. 再びアプリケーション ログを更新し、カスタム イベントが生成した状態イベント情報がログに記録されていることを確認します。

参照

処理手順

カスタムの ASP.NET Health Monitoring イベント生成の例

概念

ASP.NET Health Monitoring の概要

参照

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

EventLogWebEventProvider

その他の技術情報

HTTP モジュールを使用した ASP.NET 処理の拡張