Skip to main content

Global.asaxのApplication_Errorが呼び出されない

開発環境でGlobal.asaxのApplication_Errorでエラー処理を実装して正常に動作しましたが、本番環境で動作しません。いろいろ試したら、IIS7以降のWebSiteの設定について、Web Applicationのアプリケーションプールを「Classic .NET AppPool」に切替すると問題が解消しました。

さらに試したら、実際そのアプリケーションプールの設定の「パイプラインモード」という設定を「クラシック」にすれば問題解消します。

このようにGlobal.asaxのApplication_Errorでアプリケーション全体のエラーを処理することができます。

public class Global : System.Web.HttpApplication
{
  protected void Application_Error(object sender, EventArgs e)
  {
    Exception ex = Server.GetLastError();

    if (ex is HttpUnhandledException)
    {
      // ...
    }
  }
}

(more…)