我正在尝试设置如下所述的全局异常处理程序:Web API全局错误处理.我设置了一个在控制器构造函数中抛出异常的情况.但是我的异常没有被记录.相反,WebApi只是将异常和完整堆栈跟踪作为JSON消息返回给调用客户端.
我不知道它是否重要,但我的控制器操作正在使用async/await,如下所示:
[HttpGet, Route("GetLocationNames")]
public async Task<IEnumerable<String>> Get()
{
return await adapter.GetLocationNames();
}
Run Code Online (Sandbox Code Playgroud)
我有以下实现:
using log4net;
using System.Threading.Tasks;
using System.Web.Http.ExceptionHandling;
namespace warehouse.management.api
{
public class Log4NetExceptionLogger : ExceptionLogger
{
private ILog log = LogManager.GetLogger(typeof(Log4NetExceptionLogger));
public async override Task LogAsync(ExceptionLoggerContext context, System.Threading.CancellationToken cancellationToken)
{
log.Error("An unhandled exception occurred.", context.Exception);
await base.LogAsync(context, cancellationToken);
}
public override void Log(ExceptionLoggerContext context)
{
log.Error("An unhandled exception occurred.", context.Exception);
base.Log(context);
}
public override bool ShouldLog(ExceptionLoggerContext context)
{
return base.ShouldLog(context);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在这样注册: …