ASP.NETライフサイクルレベルの共通処理Global.asaxについて

2009/11/27 14:53更新
TAGS: ASP.NET | ライフサイクル | Global.asax | フィルタ

Global.asaxは、ASP.NET アプリケーション レベル及びセッションレベルのイベントに応答するためのファイルです。

Global.asaxに、アプリケーションの起動・アンロードやセッションの生成・破棄、リクエストの開始・終了などの共通イベント処理を追加することができます。

Global.asaxはASP.NET アプリケーションのツール ディレクトリに配置され、省略・削除してもかまいません。

実行時には、Global.asax の解析とコンパイルが行われ、HttpApplication 基本クラスから派生した .NET Framework クラスが動的に生成されます。ASP.NET の構成によって、Global.asax ファイルへの直接 URL 要求はすべて自動的に拒否されます。

Global.asaxの作成
Visual Studioの「新しい項目の追加」ウィザードで、【グローバルアプリケーション クラス】を選択すると自動でGlobal.asaxが命名され、ひな形が作成されます。

以下はC#言語ベースの説明となります。

Global.asaxファイルをテキストエディタで覗いてみると、次のような一行があります。
<%@ Application Codebehind="Global.asax.cs" Inherits="MyApp.Global" Language="C#" %>


Global.asaxと関連するGlobal.asax.csを開き、

    public class Global : System.Web.HttpApplication
    {
        protected void Application_Start(object sender, EventArgs e)
        {
        }

        protected void Application_End(object sender, EventArgs e)
        {
        }
    }

のようなコードが生成されています。

Application_Startイベント/メソッド:
  ASP.NET アプリケーションの最初のリソース (ページなど) が要求されたときに一度だけ呼び出されます。
Application_End イベント/メソッド:
  アプリケーションがアンロードされる前に、アプリケーションの有効期間に一度だけ呼び出されます。
  
Globalクラスに、Application_Xxxx(object sender, EventArgs e)という形のメソッドを定義するだけで、アプリケーションのライフ サイクルの適切な時期に呼び出されます。

Application_Start、Application_Endのほか、次のような重要なイベント・メソッドはあります。

Application_Init:アプリケーション初期化時
Session_Start:ユーザセッション開始時
Application_BeginRequest:リクエスト開始時
Application_EndRequest:リクエスト終了時
Application_AuthenticateRequest:リクエスト認証開始時
Application_Error:未処理のアプリケーション異常発生時
Session_End:セッション破棄・タイムアウト時
Application_End:アプリケーション終了・アンロード時


その以外のイベントもあります。詳細は参考資料をご参照ください。

参考資料


Global.asax ファイル - MSDN
ASP.NET アプリケーションのライフ サイクルの概要 - MSDN
Global.asax 構文 - MSDN
@IT:.NET TIPS [ASP.NET]アプリケーション共通のロギングを行うには?(Global.asax編) - C# VB.NET Webフォーム SQL

著者について
Syboos.jp編集長システム設計や開発、保守運営などを行ってます。オープンソース技術に興味があります。

Sponsored Link


コメント