【发布时间】:2021-08-06 14:35:14
【问题描述】:
我根据this example创建了一个异常处理中间件:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseExceptionHandler("/error");
// ...
}
[AllowAnonymous]
[ApiExplorerSettings(IgnoreApi = true)]
[ApiController]
public class ErrorsController : ControllerBase
{
[Route("error")]
public IActionResult Error()
{
return Problem();
}
}
现在假设我抛出了以下异常:throw new Exception("BAX");
我的异常处理中间件捕获了这个异常并且效果很好。但问题是在控制台中我看到以下日志:
|错误|Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware|执行请求时发生未处理的异常。|System.Exception: BAX(此处为堆栈跟踪)
注意:我删除了堆栈跟踪以使其更短。
也许我还应该说我使用NLog 进行日志记录。这是它的配置:
<target xsi:
type = "ColoredConsole" name = "colored_console"
layout = "|${level:uppercase=true}|${logger}|${message}|${exception:format=tostring}">
</target >
问题
我的异常被Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware 捕获。
看起来我的异常处理中间件没有处理异常。我说的对吗?
我的问题是它为什么会这样,我该如何解决?
【问题讨论】:
标签: c# api asp.net-core asp.net-web-api middleware