使用CreateErrorResponse进行WebAPI(OWIN)全局异常日志记录

时间:2018-01-19 16:40:14

标签: c# asp.net-web-api owin

当使用CreateErrorResponse()通过API方法返回错误响应时,是否有捕获处理异常的问题? 我目前已经为任何异常注册了一个简单的全局异常loggger,但是对于某些api响应,包括Model Filter属性,我使用CreateErrorResponse()来返回错误响应,但这并不是要输入Log()方法。全局异常记录器。 API方法中CreateErrorResponse的示例用法:

return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e);

Global Exception Logger:

public class GlobalExceptionLogger : ExceptionLogger
    {
        private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
        public override void Log(ExceptionLoggerContext context)
        {
            log.Error(context.Exception);
        }
    }

调用Log()方法的唯一方法是使用CreateErrorResponse,而不是抛出异常。 这是对的吗?

1 个答案:

答案 0 :(得分:0)

您应该在构建和返回错误响应的同一负流中记录错误和任何跟踪信息。

使用异常来控制应用程序流是不好的做法,避免使用它。

全球处理程序的使用是处理您尚未处理的任何内容,并且应该用于非常例外情况,您还会在那里登录并向用户显示一般错误消息,同时你当然要理清背后的混乱:)

如果我误解了你的问题,请纠正我。