Error handling 当我从控制器操作引发异常时,自定义错误处理结果为InvalidOperationException
Web.config:Error handling 当我从控制器操作引发异常时,自定义错误处理结果为InvalidOperationException,error-handling,Error Handling,Web.config: <customErrors mode="On" defaultRedirect="~/Error/"> <error statusCode="404" redirect="~/Error/NotFound/"/> <error statusCode="403" redirect="~/Error/AccessDenied/"/> <\customErrors> public static void Regi
<customErrors mode="On" defaultRedirect="~/Error/">
<error statusCode="404" redirect="~/Error/NotFound/"/>
<error statusCode="403" redirect="~/Error/AccessDenied/"/>
<\customErrors>
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);
}
抛出异常时,会发生另一个异常,该异常显示在视图上,而不是我从索引操作中故意抛出的异常
以下是错误视图中显示的内容:
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)
控制器:错误
行动:索引
消息:对象引用未设置为对象的实例。
控制器:
在c:\Workspace\ltclaims\branchs\Active\ltclaims-2013Q1\Univita.ltclaims\Univita.ltclaims\Univita.ltclaims\Views\Error\Error.cshtml第12行中的ASP.\u Page\u Views\Error\cshtml.Execute()
在System.Web.WebPages.WebPageBase.ExecutePageHierarchy()中
在System.Web.Mvc.WebViewPage.ExecutePageHierarchy()中
在System.Web.WebPages.StartPage.RunPage()中
在System.Web.WebPages.StartPage.ExecutePageHierarchy()中
位于System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext、TextWriter writer、WebPageRenderingBase起始页)
位于System.Web.Mvc.RazorView.RenderView(ViewContext-ViewContext、TextWriter-writer、对象实例)
位于System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext、ViewContext、TextWriter)
在System.Web.Mvc.ViewResultBase.ExecuteSult(ControllerContext上下文)中
位于System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext ControllerContext,ActionResult ActionResult)
在System.Web.Mvc.ControllerActionInvoker.c_uuDisplayClass1A.b_uuu17()中
位于System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter筛选器、ResultExecutingContext预文本、Func`1 continuation)
在System.Web.Mvc.ControllerActionInvoker.c_uuDisplayClass1A.c_uuDisplayClass1C.b_uu19()中
位于System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext ControllerContext,IList`1 filters,ActionResult ActionResult)
在System.Web.Mvc.Async.AsyncControllerActionInvoker.c_uuDisplayClass25.c_uuDisplayClass2A.b_u20()中
在System.Web.Mvc.Async.AsyncControllerActionInvoker.c__DisplayClass25.b__22(IAsyncResult asyncResult)
有人能告诉我为什么在我抛出异常
后会出现操作有效性异常
?我错过什么了吗
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)