1

Web.config:

<customErrors mode="On" defaultRedirect="~/Error/">
    <error statusCode="404" redirect="~/Error/NotFound/"/>
    <error statusCode="403" redirect="~/Error/AccessDenied/"/>
<\customErrors>

FilterConfig.cs:

public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
{
    filters.Add(new HandleErrorAttribute());
    filters.Add(new LtcAuthorizeAttribute());
}

カスタム エラー ビューで例外を確認するために、コントローラー アクションから例外をスローしています。

public ActionResult Index(int id) 
{
    if (id == 69732645)
    {
        throw new Exception("This is just to test an Error.");
    }
    var repository = ClaimsHelper.GetRepository();
    var rfbEntity = repository.Single<RequestForBenefit>(x => x.RfbId == id);
    var rfbModel = Mapper.Map<RequestForBenefit, RequestForBenefitModel>(rfbEntity);
    ViewBag.EobList = Mapper.Map<ICollection<EpisodeOfBenefit>, ICollection<EpisodeOfBenefitModel>>(rfbModel.EpisodeOfBenefit);
    repository.Dispose();
    return View(rfbModel);
}

エラー コントローラとインデックス アクション:

public class ErrorController : Controller 
{
    //
    // GET: /Error/
    public ActionResult Index()
    {
        return View("Error");
    }
}

InvalidOperationException例外がスローされると、Index アクションから意図的にスローしている例外ではなく、ビューに表示される別の例外が発生します。

これは、エラー ビューに表示されるものです。

Controller: Error 
Action: Index 
Message: Object reference not set to an instance of an object. 

Controller: 
at ASP._Page_Views_Error_Error_cshtml.Execute() in c:\Workspace\LTCClaims\Branches\Active\LtcClaims-2013Q1\Univita.LtcClaims\Univita.LtcClaims\Views\Error\Error.cshtml:line 12 
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy() 
at System.Web.Mvc.WebViewPage.ExecutePageHierarchy() 
at System.Web.WebPages.StartPage.RunPage() 
at System.Web.WebPages.StartPage.ExecutePageHierarchy() 
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) 
at System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) 
at System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer) 
at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) 
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) 
at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1a.<InvokeActionResultWithFilters>b__17() 
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) 
at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1a.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19() 
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) 
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<>c__DisplayClass2a.<BeginInvokeAction>b__20() 
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<BeginInvokeAction>b__22(IAsyncResult asyncResult) 

OperationInvalidExceptionスローされた後に発生する理由を誰か教えてくださいException。何か不足していますか?

4

0 に答える 0