でも今日はハマったので未来の自分のためにメモです。
Global_asaxのApplication_Errorイベントで
Server.Transferでカスタムエラーページを表示しているのですが
.netのエラーページが表示されてしまい、カスタムエラーページが表示されません。
環境はVS2012,Fw3.5です。
まったく同じコードでもVS2008,Fw2.0ではちゃんと動きます。
こういうのわかりにくいから勘弁してほしい…。
ASP.NETのGlobal_asaxのコードです。
Application_Errorイベントでカスタムエラーページを表示します。
Imports System.Web.SessionState Public Class Global_asax Inherits System.Web.HttpApplication Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs) ' エラーの発生時に呼び出されます 'カスタムエラーページを表示します。 Server.Transfer("~/CustomError.aspx") End Sub End Class
カスタムエラーページではエラー内容を表示してます。
結論いうと、Loadイベントでエラーを出力した後、Context.ClearError() を呼んであげればちゃんと動きました。
CustomError.aspx
Public Class CustomError 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 If ex IsNot Nothing Then Me.Label1.Text = ex.GetType.ToString Me.Label2.Text = ex.Message End If Context.ClearError() '<--これが必要。 End Sub End Class
web.configです
<system.web> <customErrors mode="On"/> </system.web>
0 件のコメント:
コメントを投稿