webconfigでカスタムエラーをオンにして、「/ Error/Trouble」にリダイレクトしています。これは設計どおりに機能しています。Elmahはエラーをログに記録しています。エラービューも表示されています。
問題は、エラーコントローラーのトラブルアクションでスローされたエラーを検査したいということです。エラーがスローされた場合、MVCがカスタムエラーハンドラーにリダイレクトした後、どのようにしてエラーにアクセスしますか?
CurrentUserがnullの場合、例外をスローします。
if (CurrentUser == null)
{
var message = String.Format("{0} is not known. Please contact your administrator.", context.HttpContext.User.Identity.Name);
throw new Exception(message, new Exception("Inner Exception"));
}
カスタムエラーハンドラ(「エラー/トラブル」)でこれにアクセスできるようにしたい。例外にどのようにアクセスしますか?
これが私のトラブルアクションです:
public ActionResult Trouble()
{
return View("Error");
}
これが私の見解です:
@model System.Web.Mvc.HandleErrorInfo
<h2>
Sorry, an error occurred while processing your request.
</h2>
@if (Model != null)
{
<p>@Model.Exception.Message</p>
<p>@Model.Exception.GetType().Name<br />
thrown in @Model.ControllerName @Model.ActionName</p>
<p>Error Details:</p>
<p>@Model.Exception.Message</p>
}
System.Web.Mvc.HandleErrorInfoは、私のトラブルビューのモデルであり、空です。ご協力いただきありがとうございます。