我試圖處理404和500錯誤在ASP.NET MVC 6ASP.NET核心 - 處理404和500錯誤
我有行動的控制器,它渲染頁面錯誤狀態和說明:
[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(「/ Errors/{0}」);
我想GER 404
錯誤,當網址不符合任何路線,當queryes到數據庫返回空sequencies(訪問nonexists元素)。
當LINQ返回空序列時(the sequence contains no elements
),我得到了InvalidOperationException
。我想處理全局異常,在這種情況下顯示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) }
它的工作原理,但我不知道該怎麼稱呼我的行動並顯示錯誤頁面
您不應該依賴例外來轉到404頁面。拋出異常很昂貴。例如,您最好使用'SingleOrDefault()',然後檢查返回值是否爲'null'。 – DavidG
謝謝,現在我認爲這樣 –