簡體   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