我知道有很多的问题,在SO有关错误ASP.NET MVC处理.
我知道,大多数人都试图通过三种方式实现目标:
创建BaseController并覆盖该OnException方法
使用[HandleError]或自定义异常过滤器.
Application_Error global.asax.cs中的事件
前两种方法不能处理所有异常,它们只是由动作方法/过滤器引发的,所以显然第三种方法将成为全局异常处理程序的最佳方法.
我的问题是为什么我应该[HandleError]采取措施?它带来了什么好处,我无法通过Application_Error?
最后,我是否想要customErrors在MVC应用程序中认真对待该部分?
注意:我的要求很平常.每当发生异常时,请记录它并返回自定义错误页面.自定义错误页面可能会根据状态代码而更改.
因此,我一直在努力捕捉与数据库相关的错误,例如,如果 SQL 数据库已关闭或不可用,则代码抛出错误并且网站显示空白页面,如果我app.UseDeveloperExceptionPage();在 Configure 方法中使用它,则它工作正常,但是当我正在尝试使用
任何一个
app.UseStatusCodePagesWithRedirects("/error?error={0}");
Run Code Online (Sandbox Code Playgroud)
或者
app.UseExceptionHandler("/error?error={0}");
Run Code Online (Sandbox Code Playgroud)
什么都没有发生,只显示一个空白页面,捕获其他错误(例如 404 等)工作正常。捕获 .NET Core MVC 项目中所有一般错误的正确方法是什么?