相关疑难解决方法(0)

ASP.NET WebApi IExceptionLogger不捕获异常

我正在尝试设置如下所述的全局异常处理程序: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)

我正在这样注册: …

c# asp.net asp.net-web-api

14
推荐指数
1
解决办法
1万
查看次数

标签 统计

asp.net ×1

asp.net-web-api ×1

c# ×1