繁体   English   中英

ASP.NET Core - 处理404和500错误

[英]ASP.NET Core - handling 404 and 500 error

我尝试在ASP.NET MVC 6中处理404和500错误。

  1. 我在控制器中有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); } 
  2. 我启用状态代码页和异常处理程序:

    app.UseExceptionHandler( “/错误/ 500”); app.UseStatusCodePagesWithReExecute( “/错误/ {0}”);

当url与任何路由不匹配时,我想要ger 404错误,当查询到数据库时返回空序列(访问nonexists元素)。

当LINQ返回空序列时( the sequence contains no elements ),我有InvalidOperationException 我想处理全局异常,在这种情况下显示404 ,在其他情况下显示500

  1. 我创建一个简单的过滤器并检查OnException异常:

     public void OnException(ExceptionContext context) { logger.LogError(context.Exception.Message); if (context.Exception is System.InvalidOperationException) ; //NEED TO CALL HomeController.Error(404) } 

它有效,但我不知道如何调用我的动作并显示错误页面

您可以在OnException方法中创建模型,如

public void OnException(ExceptionContext context)
{
       var model = new HandleErrorInfo(filterContext.Exception, "YourError Controller","Errors");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM