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)
    {
      // ...
    }
  }
}

以下の手順でIIS7以降のWebSite設定を直します。

1.IISマネジメントコンソールでサイトを選びます。

GAE01

2.右側の「基本設定…」をクリックします。

GAE02

3.アプリケーションプールを変更します。

GAE03

Classic .NET AppPoolに変更するとパイプラインモードが「クラシック」になり、GlobalのApplication_Errorが正常に動作するようになります。

以上。

Jingwood

北海道の田舎で暮らしているプログラマーです。最近山登りにハマりました。

Leave a Reply

Your email address will not be published. Required fields are marked *