pit*_*dis 6 asp.net-core asp.net-core-2.0 razor-pages
在我的项目中,我想记录数据库表中应用程序中发生的所有错误.我使用try catch块捕获几乎所有错误,但我无法捕获像4xx和5xx这样的全局错误.
有些情况下,应用程序不会重定向到Startup.cs的Configure方法中定义的异常处理程序,就像我键入不存在的URL时一样.
app.UseExceptionHandler("/Error");
Run Code Online (Sandbox Code Playgroud)
有没有办法捕获我的应用程序中发生的所有未处理的错误?
您可以创建自己的异常过滤器,它实现IExceptionFilter例如:
public class GlobalExceptionFilter : IExceptionFilter
{
ILogger<GlobalExceptionFilter> logger = null;
public GlobalExceptionFilter(ILogger<GlobalExceptionFilter> exceptionLogger)
{
logger = exceptionLogger;
}
public void OnException(ExceptionContext context)
{
// log the exception
logger.LogError(0, context.Exception.GetBaseException(), "Exception occurred.");
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以在你的ConfigureServices方法中添加这个过滤器,如下所示:
services.AddMvc(o => { o.Filters.Add<GlobalExceptionFilter>(); });
Run Code Online (Sandbox Code Playgroud)
这将捕获由于请求而发生的任何未处理的异常。对于 404,您可以将以下内容添加到您的Configure方法中:
app.UseStatusCodePagesWithReExecute("/error/{0}");
Run Code Online (Sandbox Code Playgroud)
然后,您可以在您的ErrorController.
有关详细信息,请参阅ASP.NET Core 中的错误处理简介
| 归档时间: |
|
| 查看次数: |
2763 次 |
| 最近记录: |