我尝试在ASP.NET MVC 6中处理404和500错误。
我在控制器中有Action,它呈现具有错误状态和描述的页面:
[HttpGet]
[Route("/Errors/{status}")]
public IActionResult Errors(int status)
{
var model = Mapper.Map<ErrorViewModel>(BaseData);
model.ErrorCode = status;
if (error_descriptions.ContainsKey(status))
model.Description = error_descriptions[status];
else
model.Description = "Неизвестная ошибка";
return View(model);
}
我启用状态代码页和异常处理程序:
app.UseExceptionHandler( “/错误/ 500”); app.UseStatusCodePagesWithReExecute( “/错误/ {0}”);
当url与任何路由不匹配时,以及当查询数据库时返回空序列(访问nonexists元素)时,我想发生ger 404
错误。
当LINQ返回空序列(InvalidOperationException
)时,我得到the sequence contains no elements
。我想处理全局异常,在这种情况下显示404
,在其他情况下显示500
。
我制作一个简单的过滤器并检查OnException
中的异常:
public void OnException(ExceptionContext context)
{
logger.LogError(context.Exception.Message);
if (context.Exception is System.InvalidOperationException) ;
//NEED TO CALL HomeController.Error(404)
}
有效,但我不知道如何调用我的操作并显示错误页面
答案 0 :(得分:1)
您可以在OnException
方法中创建模型,例如
public void OnException(ExceptionContext context)
{
var model = new HandleErrorInfo(filterContext.Exception, "YourError Controller","Errors");
}