ASP.NET 開発メモ

ASP.NET で 例外を検出する方法

Global.aspx に、エラー発生時のハンドラを記述すれば良い。

<%@ Import Namespace="System.IO" %>
<script Language="C#" runat="Server">
void Application_OnError(Object sender, EventArgs e) {
{
	//	ここでログに書くなどする。
	Exception err = Server.GetLastError().InnerException;
	logger.Error( "エラーだよん。", err );
}
</script>

スクリプトではなく、コードに書く場合は、

<%@ Application Codebehind="Global.asax.cs" Inherits="Sample.Global"%>

として、Global.asax.cs に

using System;
using System.Diagnostics;

namespace Sample 
{
	public class Global : System.Web.HttpApplication
	{
		public Global()
		{
			InitializeComponent();
		}

		protected void Application_Error(Object sender, EventArgs e)
		{
			//	ここでログに書くなどする。
			Exception err = Server.GetLastError().GetBaseException();
			logger.Error( "エラーだよん。", err );
		}
	}
}

などと書く。

Global.asax は、ASP.NET のルートに置く。

※ちなみに、上の logger は log4net なんか使えるかと。

コードでは次のイベントも拾うことができる。

イベントハンドラタイミング
Application_Startアプリケーションの初回起動時。
Application_Endアプリケーションが破棄された時。
Session_Startユーザーセッションの初回起動時。
Session_Endユーザーセッションの終了時。
Application_BeginRequest?GETやPOSTなどのリクエスト発生時。
Application_EndRequest?GETやPOSTなどのリクエスト終了時。
Application_DisposedCLRがASP.NETアプリケーションを最終的にメモリから破棄するタイミング。
Application_Errorアプリケーション内で処理されない例外が発生した時。

参考


プログラム・開発系メモ


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS