[英]using UseExceptionHandler() with API handling and 404 handling in ASP.NET Core 2
[英]ASP.NET Core - handling 404 and 500 error
我嘗試在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與任何路由不匹配時,我想要ger 404
錯誤,當查詢到數據庫時返回空序列(訪問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) }
它有效,但我不知道如何調用我的動作並顯示錯誤頁面
您可以在OnException
方法中創建模型,如
public void OnException(ExceptionContext context)
{
var model = new HandleErrorInfo(filterContext.Exception, "YourError Controller","Errors");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.