Global.asaxファイル
Global.asaxファイルをアプリケーション・ルート直下に追加します。Application_Errorイベントにハンドルされなかった例外を処理するコードを記述します。
<%@ Application Language="VB" %>
<script runat="server">
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
' アプリケーションのスタートアップで実行するコードです
End Sub
Sub Application_End(ByVal sender As Object, ByVal e As EventArgs)
' アプリケーションのシャットダウンで実行するコードです
End Sub
Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
' ハンドルされていないエラーが発生したときに実行するコードです
'ログを出力します。
Using writer As New System.IO.StreamWriter(Server.MapPath("~/MyError.log"), True)
Dim err As Exception = Server.GetLastError.InnerException
If err IsNot Nothing Then
Dim text As New System.Text.StringBuilder
text.Append(err.Source & Chr(13))
text.Append(err.Message & Chr(13))
text.Append(DateTime.Now.ToString & Chr(13))
writer.WriteLine(text.ToString)
End If
End Using
'カスタムエラーページを表示します。
Server.Transfer("~/MyError.aspx")
End Sub
Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
' 新規セッションを開始したときに実行するコードです
End Sub
Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
' セッションが終了したときに実行するコードです
' メモ: Session_End イベントは、Web.config ファイル内で sessionstate モードが
' InProc に設定されているときのみ発生します。session モードが StateServer か、または
' SQLServer に設定されている場合、イベントは発生しません。
End Sub
</script>
カスタムエラーページを作成
ルート直下にMyError.aspxフォームを追加します。今回はラベルを2つ配置し、Loadイベントで例外情報を出すようにしてみます。
Partial Class MyError
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles Me.Load
Dim ex As Exception
ex = Server.GetLastError
If TypeOf ex Is HttpUnhandledException AndAlso ex.InnerException IsNot Nothing Then
ex = ex.InnerException
End If
Me.Label1.Text = ex.GetType.ToString
Me.Label2.Text = ex.Message
End Sub
End Class
0 件のコメント:
コメントを投稿