public override void OnException(ExceptionContext context) { var minException = new MinException { User = context.HttpContext?.User?.Identity?.Name, Method = context.HttpContext?.Request?.Method, Path = context.HttpContext?.Request?.Path.ToUriComponent(), QueryString = context.HttpContext?.Request.QueryString.ToUriComponent(), Body = new StreamReader(context.HttpContext?.Request.Body).ReadToEnd(), Message = context.Exception.Message, Exception = context.Exception.ToString() }; _logger.LogError(context.Exception, SerializeObject(minException)); if (context.Exception is NotFoundException) { context.HttpContext.Response.StatusCode = (int)HttpStatusCode.NotFound; } else if (context.Exception is ForbiddenException) { context.HttpContext.Response.StatusCode = (int)HttpStatusCode.Forbidden; } else { context.HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError; } context.HttpContext.Response.ContentType = "application/json"; context.HttpContext.Response.WriteAsync(SerializeObject(new { success = false, error = minException })); context.ExceptionHandled = true; }
static void Main(string[] args) { try { App(); } catch (Exception ex) { // log MinException e = new MinException("Kan ikke... fordi... ", ex); throw e; } }