1. ホーム
  2. asp.net

[解決済み] ASP.NET カスタムエラーページ - Server.GetLastError() is null

2022-09-18 16:55:56

質問

アプリケーションにカスタムエラーページを設定しています。

<customErrors mode="On" defaultRedirect="~/errors/GeneralError.aspx"
/>

Global.asaxのApplication_Error()で、以下のコードが例外の詳細を取得するために動作します。

  Exception ex = Server.GetLastError();
  if (ex != null)
    {
        if (ex.GetBaseException() != null)
            ex = ex.GetBaseException();
    }

エラーページ (~/errors/GeneralError.aspx.cs) に到達するまでに Server.GetLastError() は null になっています。

Global.asax.csではなく、エラーページで例外の詳細を得ることができる方法はありますか?

Vista/IIS7 上で ASP.NET 3.5 を使用しています。

どのように解決するのですか?

web.config の設定をよく見てみると、コメントの 1 つである この投稿は非常に役に立ちます

asp.net 3.5 sp1では、新しいパラメータredirectModeがあります。

そこで、次のように修正します。 customErrors を修正して、このパラメータを追加します。

<customErrors mode="RemoteOnly" defaultRedirect="~/errors/GeneralError.aspx" redirectMode="ResponseRewrite" />

その ResponseRewrite モードでは、ブラウザをリダイレクトせずに「エラーページ」を読み込むことができるため、URLはそのままで、私にとって重要なのは、例外情報が失われないということです。